[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH 03/10] Pass PXENVBD_SRBEXT, not PSCSI_REQUEST_BLOCK



From: Owen Smith <owen.smith@xxxxxxxxxx>

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xenvbd/adapter.c | 16 ++++++++++------
 src/xenvbd/adapter.h |  7 ++++---
 src/xenvbd/target.c  | 15 ++++++++-------
 src/xenvbd/target.h  |  5 ++---
 4 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c
index ec6711a..bc93037 100644
--- a/src/xenvbd/adapter.c
+++ b/src/xenvbd/adapter.c
@@ -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;
 }
 
diff --git a/src/xenvbd/adapter.h b/src/xenvbd/adapter.h
index b8706fd..a398b75 100644
--- a/src/xenvbd/adapter.h
+++ b/src/xenvbd/adapter.h
@@ -36,13 +36,14 @@
 
 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
diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
index 5bab440..1f45afb 100644
--- a/src/xenvbd/target.c
+++ b/src/xenvbd/target.c
@@ -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;
 
diff --git a/src/xenvbd/target.h b/src/xenvbd/target.h
index 9455d56..67b6319 100644
--- a/src/xenvbd/target.h
+++ b/src/xenvbd/target.h
@@ -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
-- 
2.8.3


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.