Index: /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp	(revision 39763)
+++ /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp	(revision 39764)
@@ -141,4 +141,8 @@
         {
             rc = pThis->pDrvBlock->pfnFlush(pThis->pDrvBlock);
+            if (   RT_FAILURE(rc)
+                && pThis->cErrors++ < MAX_LOG_REL_ERRORS)
+                LogRel(("SCSI#%u: Flush returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance, rc));
             break;
         }
@@ -190,4 +194,14 @@
             }
 
+            if (   RT_FAILURE(rc)
+                && pThis->cErrors++ < MAX_LOG_REL_ERRORS)
+                LogRel(("SCSI#%u: %s at offset %llu (%u bytes left) returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance,
+                        enmTxDir == VSCSIIOREQTXDIR_READ
+                        ? "Read"
+                        : "Write",
+                        uOffset,
+                        cbTransfer, rc));
+
             break;
         }
@@ -203,4 +217,10 @@
             rc = pThis->pDrvBlock->pfnDiscard(pThis->pDrvBlock, paRanges, cRanges);
             pThis->pLed->Actual.s.fWriting = 0;
+
+            if (   RT_FAILURE(rc)
+                && pThis->cErrors++ < MAX_LOG_REL_ERRORS)
+                LogRel(("SCSI#%u: Unmap returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance, rc));
+
             break;
         }
@@ -247,26 +267,31 @@
     {
         pThis->cErrors++;
-        if (   pThis->cErrors < MAX_LOG_REL_ERRORS
-            && enmTxDir == VSCSIIOREQTXDIR_FLUSH)
-            LogRel(("SCSI#%u: Flush returned rc=%Rrc\n",
-                    pThis->pDrvIns->iInstance, rc));
-        else
+        if (pThis->cErrors < MAX_LOG_REL_ERRORS)
         {
-            uint64_t  uOffset    = 0;
-            size_t    cbTransfer = 0;
-            size_t    cbSeg      = 0;
-            PCRTSGSEG paSeg      = NULL;
-            unsigned  cSeg       = 0;
-
-            VSCSIIoReqParamsGet(hVScsiIoReq, &uOffset, &cbTransfer,
-                                &cSeg, &cbSeg, &paSeg);
-
-            LogRel(("SCSI#%u: %s at offset %llu (%u bytes left) returned rc=%Rrc\n",
-                    pThis->pDrvIns->iInstance,
-                    enmTxDir == VSCSIIOREQTXDIR_READ
-                    ? "Read"
-                    : "Write",
-                    uOffset,
-                    cbTransfer, rc));
+            if (enmTxDir == VSCSIIOREQTXDIR_FLUSH)
+                LogRel(("SCSI#%u: Flush returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance, rc));
+            else if (enmTxDir == VSCSIIOREQTXDIR_UNMAP)
+                LogRel(("SCSI#%u: Unmap returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance, rc));
+            else
+            {
+                uint64_t  uOffset    = 0;
+                size_t    cbTransfer = 0;
+                size_t    cbSeg      = 0;
+                PCRTSGSEG paSeg      = NULL;
+                unsigned  cSeg       = 0;
+
+                VSCSIIoReqParamsGet(hVScsiIoReq, &uOffset, &cbTransfer,
+                                    &cSeg, &cbSeg, &paSeg);
+
+                LogRel(("SCSI#%u: %s at offset %llu (%u bytes left) returned rc=%Rrc\n",
+                        pThis->pDrvIns->iInstance,
+                        enmTxDir == VSCSIIOREQTXDIR_READ
+                        ? "Read"
+                        : "Write",
+                        uOffset,
+                        cbTransfer, rc));
+            }
         }
 
