Index: /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp	(revision 64225)
+++ /trunk/src/VBox/Devices/Storage/DrvSCSI.cpp	(revision 64226)
@@ -82,5 +82,4 @@
  * SCSI driver instance data.
  *
- * @implements  PDMISCSICONNECTOR
  * @implements  PDMIMEDIAEXPORT
  * @implements  PDMIMEDIAEX
@@ -100,6 +99,4 @@
     /** Pointer to the attached driver's mount interface. */
     PPDMIMOUNT              pDrvMount;
-    /** Pointer to the SCSI port interface of the device above. */
-    PPDMISCSIPORT           pDevScsiPort;
     /** Pointer to the extended media port interface of the device above. */
     PPDMIMEDIAEXPORT        pDevMediaExPort;
@@ -108,6 +105,4 @@
     /** pointer to the Led port interface of the dveice above. */
     PPDMILEDPORTS           pLedPort;
-    /** The scsi connector interface .*/
-    PDMISCSICONNECTOR       ISCSIConnector;
     /** The media interface for the device above. */
     PDMIMEDIA               IMedia;
@@ -624,96 +619,4 @@
 }
 
-static DECLCALLBACK(void) drvscsiVScsiReqCompleted(VSCSIDEVICE hVScsiDevice, void *pVScsiDeviceUser,
-                                                   void *pVScsiReqUser, int rcScsiCode, bool fRedoPossible, int rcReq)
-{
-    RT_NOREF(hVScsiDevice);
-    PDRVSCSI pThis = (PDRVSCSI)pVScsiDeviceUser;
-
-    ASMAtomicDecU32(&pThis->StatIoDepth);
-
-    pThis->pDevScsiPort->pfnSCSIRequestCompleted(pThis->pDevScsiPort, (PPDMSCSIREQUEST)pVScsiReqUser,
-                                                 rcScsiCode, fRedoPossible, rcReq);
-
-    if (RT_UNLIKELY(pThis->fDummySignal) && !pThis->StatIoDepth)
-        PDMDrvHlpAsyncNotificationCompleted(pThis->pDrvIns);
-}
-
-/* -=-=-=-=- ISCSIConnector -=-=-=-=- */
-
-#ifdef DEBUG
-/**
- * Dumps a SCSI request structure for debugging purposes.
- *
- * @returns nothing.
- * @param   pRequest    Pointer to the request to dump.
- */
-static void drvscsiDumpScsiRequest(PPDMSCSIREQUEST pRequest)
-{
-    Log(("Dump for pRequest=%#p Command: %s\n", pRequest, SCSICmdText(pRequest->pbCDB[0])));
-    Log(("cbCDB=%u\n", pRequest->cbCDB));
-    for (uint32_t i = 0; i < pRequest->cbCDB; i++)
-        Log(("pbCDB[%u]=%#x\n", i, pRequest->pbCDB[i]));
-    Log(("cbScatterGather=%u\n", pRequest->cbScatterGather));
-    Log(("cScatterGatherEntries=%u\n", pRequest->cScatterGatherEntries));
-    /* Print all scatter gather entries. */
-    for (uint32_t i = 0; i < pRequest->cScatterGatherEntries; i++)
-    {
-        Log(("ScatterGatherEntry[%u].cbSeg=%u\n", i, pRequest->paScatterGatherHead[i].cbSeg));
-        Log(("ScatterGatherEntry[%u].pvSeg=%#p\n", i, pRequest->paScatterGatherHead[i].pvSeg));
-    }
-    Log(("pvUser=%#p\n", pRequest->pvUser));
-}
-#endif
-
-/** @interface_method_impl{PDMISCSICONNECTOR,pfnSCSIRequestSend} */
-static DECLCALLBACK(int) drvscsiRequestSend(PPDMISCSICONNECTOR pInterface, PPDMSCSIREQUEST pSCSIRequest)
-{
-    int rc;
-    PDRVSCSI pThis = RT_FROM_MEMBER(pInterface, DRVSCSI, ISCSIConnector);
-    VSCSIREQ hVScsiReq;
-
-#ifdef DEBUG
-    drvscsiDumpScsiRequest(pSCSIRequest);
-#endif
-
-    rc = VSCSIDeviceReqCreate(pThis->hVScsiDevice, &hVScsiReq,
-                              pSCSIRequest->uLogicalUnit,
-                              pSCSIRequest->pbCDB,
-                              pSCSIRequest->cbCDB,
-                              pSCSIRequest->cbScatterGather,
-                              pSCSIRequest->cScatterGatherEntries,
-                              pSCSIRequest->paScatterGatherHead,
-                              pSCSIRequest->pbSenseBuffer,
-                              pSCSIRequest->cbSenseBuffer,
-                              pSCSIRequest);
-    if (RT_FAILURE(rc))
-        return rc;
-
-    ASMAtomicIncU32(&pThis->StatIoDepth);
-    rc = VSCSIDeviceReqEnqueue(pThis->hVScsiDevice, hVScsiReq);
-
-    return rc;
-}
-
-/** @interface_method_impl{PDMISCSICONNECTOR,pfnQueryLUNType} */
-static DECLCALLBACK(int) drvscsiQueryLUNType(PPDMISCSICONNECTOR pInterface, uint32_t iLun, PPDMSCSILUNTYPE pLunType)
-{
-    PDRVSCSI pThis = RT_FROM_MEMBER(pInterface, DRVSCSI, ISCSIConnector);
-    VSCSILUNTYPE enmLunType;
-
-    int rc = VSCSIDeviceLunQueryType(pThis->hVScsiDevice, iLun, &enmLunType);
-    if (RT_FAILURE(rc))
-        return rc;
-
-    switch (enmLunType)
-    {
-    case VSCSILUNTYPE_SBC:  *pLunType = PDMSCSILUNTYPE_SBC; break;
-    case VSCSILUNTYPE_MMC:  *pLunType = PDMSCSILUNTYPE_MMC; break;
-    case VSCSILUNTYPE_SSC:  *pLunType = PDMSCSILUNTYPE_SSC; break;
-    default:                *pLunType = PDMSCSILUNTYPE_INVALID;
-    }
-
-    return rc;
-}
 
 /* -=-=-=-=- IMedia -=-=-=-=- */
@@ -1089,8 +992,5 @@
     Assert(RT_SUCCESS(rc) || rc == VERR_PDM_MEDIA_LOCKED || rc == VERR_PDM_MEDIA_NOT_MOUNTED);
     if (RT_SUCCESS(rc))
-    {
-        if (pThis->pDevMediaExPort)
-            pThis->pDevMediaExPort->pfnMediumEjected(pThis->pDevMediaExPort);
-    }
+        pThis->pDevMediaExPort->pfnMediumEjected(pThis->pDevMediaExPort);
 
     pEjectState->rcReq = rc;
@@ -1111,5 +1011,4 @@
     PDMIBASE_RETURN_INTERFACE(pszIID, PDMIMOUNT, pThis->pDrvMount);
     PDMIBASE_RETURN_INTERFACE(pszIID, PDMIBASE, &pDrvIns->IBase);
-    PDMIBASE_RETURN_INTERFACE(pszIID, PDMISCSICONNECTOR, &pThis->ISCSIConnector);
     PDMIBASE_RETURN_INTERFACE(pszIID, PDMIMEDIAEX, pThis->pDevMediaExPort ? &pThis->IMediaEx : NULL);
     PDMIBASE_RETURN_INTERFACE(pszIID, PDMIMEDIA, pThis->pDrvMedia ? &pThis->IMedia : NULL);
@@ -1125,12 +1024,6 @@
     PDRVSCSI pThis = RT_FROM_MEMBER(pInterface, DRVSCSI, IPort);
 
-    if (pThis->pDevScsiPort)
-        return pThis->pDevScsiPort->pfnQueryDeviceLocation(pThis->pDevScsiPort, ppcszController,
-                                                           piInstance, piLUN);
-    if (pThis->pDevMediaPort)
-        return pThis->pDevMediaPort->pfnQueryDeviceLocation(pThis->pDevMediaPort, ppcszController,
-                                                            piInstance, piLUN);
-
-    return VERR_NOT_SUPPORTED;
+    return pThis->pDevMediaPort->pfnQueryDeviceLocation(pThis->pDevMediaPort, ppcszController,
+                                                        piInstance, piLUN);
 }
 
@@ -1365,6 +1258,4 @@
      */
     pThis->pDrvIns                              = pDrvIns;
-    pThis->ISCSIConnector.pfnSCSIRequestSend    = drvscsiRequestSend;
-    pThis->ISCSIConnector.pfnQueryLUNType       = drvscsiQueryLUNType;
 
     pDrvIns->IBase.pfnQueryInterface            = drvscsiQueryInterface;
@@ -1420,7 +1311,4 @@
     pThis->IPortEx.pfnIoReqStateChanged         = drvscsiIoReqStateChanged;
 
-    /* Query the optional SCSI port interface above. */
-    pThis->pDevScsiPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMISCSIPORT);
-
     /* Query the optional media port interface above. */
     pThis->pDevMediaPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMIMEDIAPORT);
@@ -1429,6 +1317,6 @@
     pThis->pDevMediaExPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMIMEDIAEXPORT);
 
-    AssertMsgReturn(pThis->pDevScsiPort || pThis->pDevMediaExPort,
-                    ("Missing SCSI or extended media port interface above\n"), VERR_PDM_MISSING_INTERFACE);
+    AssertMsgReturn(pThis->pDevMediaExPort,
+                    ("Missing extended media port interface above\n"), VERR_PDM_MISSING_INTERFACE);
 
     /* Query the optional LED interface above. */
@@ -1506,9 +1394,5 @@
     pThis->VScsiIoCallbacks.pfnVScsiLunMediumSetLock       = drvscsiSetLock;
 
-    rc = VSCSIDeviceCreate(&pThis->hVScsiDevice,
-                             pThis->pDevMediaExPort
-                           ? drvscsiIoReqVScsiReqCompleted
-                           : drvscsiVScsiReqCompleted,
-                           pThis);
+    rc = VSCSIDeviceCreate(&pThis->hVScsiDevice, drvscsiIoReqVScsiReqCompleted, pThis);
     AssertMsgReturn(RT_SUCCESS(rc), ("Failed to create VSCSI device rc=%Rrc\n", rc), rc);
     rc = VSCSILunCreate(&pThis->hVScsiLun, enmLunType, &pThis->VScsiIoCallbacks,
@@ -1538,8 +1422,5 @@
     uint32_t iCtrlLun = 0;
 
-    if (pThis->pDevScsiPort)
-        rc = pThis->pDevScsiPort->pfnQueryDeviceLocation(pThis->pDevScsiPort, &pszCtrl, &iCtrlInstance, &iCtrlLun);
-    if (pThis->pDevMediaPort)
-        rc = pThis->pDevMediaPort->pfnQueryDeviceLocation(pThis->pDevMediaPort, &pszCtrl, &iCtrlInstance, &iCtrlLun);
+    rc = pThis->pDevMediaPort->pfnQueryDeviceLocation(pThis->pDevMediaPort, &pszCtrl, &iCtrlInstance, &iCtrlLun);
     if (RT_SUCCESS(rc))
     {
