]> xenbits.xensource.com Git - pvdrivers/win/xenvbd.git/commitdiff
Pass PXENVBD_SRBEXT, not PSCSI_REQUEST_BLOCK
authorOwen Smith <owen.smith@citrix.com>
Tue, 20 Jun 2017 16:10:03 +0000 (17:10 +0100)
committerPaul Durrant <paul.durrant@citrix.com>
Tue, 27 Jun 2017 14:25:35 +0000 (15:25 +0100)
Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xenvbd/adapter.c
src/xenvbd/adapter.h
src/xenvbd/target.c
src/xenvbd/target.h

index ec6711ad84bc8a0c3334a701a09bbf1b6c93ab89..bc930371c97e125199f4eaa21f8b159b27cd867d 100644 (file)
@@ -1396,10 +1396,12 @@ AdapterTeardown(
 
 VOID
 AdapterCompleteSrb(
-    IN  PXENVBD_ADAPTER     Adapter,
-    IN  PSCSI_REQUEST_BLOCK Srb
+    IN  PXENVBD_ADAPTER Adapter,
+    IN  PXENVBD_SRBEXT  SrbExt
     )
 {
+    PSCSI_REQUEST_BLOCK Srb = SrbExt->Srb;
+
     ASSERT3U(Srb->SrbStatus, !=, SRB_STATUS_PENDING);
 
     ++Adapter->Completed;
@@ -1717,6 +1719,7 @@ AdapterHwBuildIo(
     )
 {
     PXENVBD_ADAPTER         Adapter = DevExt;
+    PXENVBD_SRBEXT          SrbExt = Srb->SrbExtension;
 
     InitSrbExt(Srb);
 
@@ -1746,7 +1749,7 @@ AdapterHwBuildIo(
         break;
     }
 
-    AdapterCompleteSrb(Adapter, Srb);
+    AdapterCompleteSrb(Adapter, SrbExt);
     return FALSE;
 }
 
@@ -1759,6 +1762,7 @@ AdapterHwStartIo(
     )
 {
     PXENVBD_ADAPTER         Adapter = DevExt;
+    PXENVBD_SRBEXT          SrbExt = Srb->SrbExtension;
     PXENVBD_TARGET          Target;
 
     Target = AdapterGetTarget(Adapter, Srb->TargetId);
@@ -1766,14 +1770,14 @@ AdapterHwStartIo(
         goto fail1;
 
     ++Adapter->StartIo;
-    if (TargetStartIo(Target, Srb))
-        AdapterCompleteSrb(Adapter, Srb);
+    if (TargetStartIo(Target, SrbExt))
+        AdapterCompleteSrb(Adapter, SrbExt);
 
     return TRUE;
 
 fail1:
     Srb->SrbStatus = SRB_STATUS_INVALID_TARGET_ID;
-    AdapterCompleteSrb(Adapter, Srb);
+    AdapterCompleteSrb(Adapter, SrbExt);
     return TRUE;
 }
 
index b8706fd95500322a88b9a1d1b514a0596953beb2..a398b7595dcdd6881e9b1109c87b5bc33bd84c4a 100644 (file)
 
 typedef struct _XENVBD_ADAPTER XENVBD_ADAPTER, *PXENVBD_ADAPTER;
 
-#include <storport.h>
 #include <store_interface.h>
 #include <evtchn_interface.h>
 #include <gnttab_interface.h>
 #include <debug_interface.h>
 #include <suspend_interface.h>
 
+#include "srbext.h"
+
 #define ADAPTER_GET_INTERFACE(_name, _type)     \
 extern VOID                                     \
 AdapterGet ## _name ## Interface(               \
@@ -66,8 +67,8 @@ AdapterIsTargetEmulated(
 
 extern VOID
 AdapterCompleteSrb(
-    IN  PXENVBD_ADAPTER     Adapter,
-    IN  PSCSI_REQUEST_BLOCK Srb
+    IN  PXENVBD_ADAPTER Adapter,
+    IN  PXENVBD_SRBEXT  SrbExt
     );
 
 extern VOID
index 5bab44012b1bc455db1e8e047d8f03096db7dac6..1f45afb3159731068ae11e03cf0a6e974d3ab861 100644 (file)
@@ -1297,7 +1297,7 @@ __TargetPauseDataPath(
         Verbose("Target[%d] : FreshSrb 0x%p -> SCSI_ABORTED\n", TargetGetTargetId(Target), SrbExt->Srb);
         SrbExt->Srb->SrbStatus = SRB_STATUS_ABORTED;
         SrbExt->Srb->ScsiStatus = 0x40; // SCSI_ABORTED;
-        AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt->Srb);
+        AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt);
     }
 
     // Fail PreparedReqs
@@ -1317,7 +1317,7 @@ __TargetPauseDataPath(
 
         if (InterlockedDecrement(&SrbExt->Count) == 0) {
             SrbExt->Srb->ScsiStatus = 0x40; // SCSI_ABORTED
-            AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt->Srb);
+            AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt);
         }
     }
 }
@@ -1429,7 +1429,7 @@ TargetCompleteShutdown(
             break;
         SrbExt = CONTAINING_RECORD(Entry, XENVBD_SRBEXT, Entry);
         SrbExt->Srb->SrbStatus = SRB_STATUS_SUCCESS;
-        AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt->Srb);
+        AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt);
     }
 }
 
@@ -1526,7 +1526,7 @@ TargetCompleteResponse(
             Srb->ScsiStatus = 0x40; // SCSI_ABORTED
         }
 
-        AdapterCompleteSrb(TargetGetAdapter(Target), Srb);
+        AdapterCompleteSrb(TargetGetAdapter(Target), SrbExt);
     }
 }
 
@@ -2129,13 +2129,14 @@ __ValidateSrbForTarget(
     return TRUE;
 }
 
-__checkReturn
 BOOLEAN
 TargetStartIo(
-    __in PXENVBD_TARGET             Target,
-    __in PSCSI_REQUEST_BLOCK     Srb
+    IN  PXENVBD_TARGET  Target,
+    IN  PXENVBD_SRBEXT  SrbExt
     )
 {
+    PSCSI_REQUEST_BLOCK Srb = SrbExt->Srb;
+
     if (!__ValidateSrbForTarget(Target, Srb))
         return TRUE;
 
index 9455d56f2de5a4761589032d9247892cca3d71b4..67b6319e4e353a9f636b8ff24054ecafda818b55 100644 (file)
@@ -162,11 +162,10 @@ TargetReset(
     __in PXENVBD_TARGET             Target
     );
 
-__checkReturn
 extern BOOLEAN
 TargetStartIo(
-    __in PXENVBD_TARGET             Target,
-    __in PSCSI_REQUEST_BLOCK     Srb
+    IN  PXENVBD_TARGET  Target,
+    IN  PXENVBD_SRBEXT  SrbExt
     );
 
 extern VOID