]> xenbits.xensource.com Git - pvdrivers/win/xenvbd.git/commitdiff
Remove BlockRing.Outstanding / BlockRingAbort 8.1.0-rc7
authorOwen Smith <owen.smith@citrix.com>
Wed, 2 Dec 2015 15:16:49 +0000 (15:16 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Fri, 4 Dec 2015 13:37:03 +0000 (13:37 +0000)
The BlockRing Outstanding stat is duplicated by SubmittedReqs.Count.
Remove BlockRing.Outstanding and the BlockRingAbort function as the
stat is not useful, and can trigger ASSERTion failures when requests
are stuck outstanding on a broken ring that is being destroyed.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xenvbd/blockring.c
src/xenvbd/blockring.h
src/xenvbd/pdo.c

index 28f1393da9c4e3ff7bc50f194f26b96e88831d49..6e07f093a3eb189c2f887a758be3538ace0b2188 100644 (file)
@@ -56,7 +56,6 @@ struct _XENVBD_BLOCKRING {
     ULONG                           DeviceId;
     ULONG                           Order;
     PVOID                           Grants[XENVBD_MAX_RING_PAGES];
-    ULONG                           Outstanding;
     ULONG                           Submitted;
     ULONG                           Received;
 };
@@ -235,7 +234,6 @@ __BlockRingInsert(
         break;
     }
     ++BlockRing->Submitted;
-    ++BlockRing->Outstanding;
 }
 
 NTSTATUS
@@ -432,7 +430,6 @@ BlockRingDisconnect(
     PXENVBD_GRANTER Granter = FrontendGetGranter(BlockRing->Frontend);
 
     ASSERT(BlockRing->Connected == TRUE);
-    ASSERT3U(BlockRing->Outstanding, ==, 0);
 
     BlockRing->Submitted = 0;
     BlockRing->Received = 0;
@@ -467,8 +464,7 @@ BlockRingDebugCallback(
     PXENVBD_GRANTER Granter = FrontendGetGranter(BlockRing->Frontend);
 
     XENBUS_DEBUG(Printf, Debug,
-                 "BLOCKRING: Requests  : %d / %d / %d\n",
-                 BlockRing->Outstanding,
+                 "BLOCKRING: Requests  : %d / %d\n",
                  BlockRing->Submitted,
                  BlockRing->Received);
 
@@ -543,7 +539,6 @@ BlockRingPoll(
 
             if (__BlockRingPutTag(BlockRing, Response->id, &Tag)) {
                 ++BlockRing->Received;
-                --BlockRing->Outstanding;
                 PdoCompleteResponse(Pdo, Tag, Response->status);
             }
 
@@ -589,24 +584,3 @@ BlockRingSubmit(
 
     return TRUE;
 }
-
-VOID
-BlockRingAbort(
-    IN  PXENVBD_BLOCKRING           BlockRing,
-    IN  PXENVBD_REQUEST             Request
-    )
-{
-    KIRQL               Irql;
-
-    UNREFERENCED_PARAMETER(Request);
-
-    KeAcquireSpinLock(&BlockRing->Lock, &Irql);
-
-    // Should check Request is present on the ring, but
-    // the shared page(s) may not contain any valid data,
-    // due to suspend/resume
-    ASSERT3U(BlockRing->Outstanding, >, 0);
-    --BlockRing->Outstanding;
-
-    KeReleaseSpinLock(&BlockRing->Lock, Irql);
-}
index 4c94b6c0f0a9900e974de1f52bbd051f606adef6..1117d739de50fb565518977e9b7edc4a647d8e3a 100644 (file)
@@ -94,10 +94,4 @@ BlockRingSubmit(
     IN  PXENVBD_REQUEST             Request
     );
 
-extern VOID
-BlockRingAbort(
-    IN  PXENVBD_BLOCKRING           BlockRing,
-    IN  PXENVBD_REQUEST             Request
-    );
-
 #endif // _XENVBD_BLOCKRING_H
index 198c4d395c9c2e998ea242b0f0f263c03bb6600d..2971e127f47c3cecd0b8fa049d18de62fbd7a477 100644 (file)
@@ -1721,8 +1721,7 @@ PdoPreResume(
     )
 {
     LIST_ENTRY          List;
-    PXENVBD_BLOCKRING   BlockRing = FrontendGetBlockRing(Pdo->Frontend);
-    
+
     InitializeListHead(&List);
 
     // pop all submitted requests, cleanup and add associated SRB to a list
@@ -1735,7 +1734,6 @@ PdoPreResume(
         Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry);
         SrbExt = GetSrbExt(Request->Srb);
 
-        BlockRingAbort(BlockRing, Request);
         RequestCleanup(Pdo, Request);
         __LookasideFree(&Pdo->RequestList, Request);