[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Remove BlockRing.Outstanding / BlockRingAbort
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@xxxxxxxxxx> --- src/xenvbd/blockring.c | 28 +--------------------------- src/xenvbd/blockring.h | 6 ------ src/xenvbd/pdo.c | 4 +--- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/xenvbd/blockring.c b/src/xenvbd/blockring.c index 6ca9cb2..e0275af 100644 --- a/src/xenvbd/blockring.c +++ b/src/xenvbd/blockring.c @@ -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); -} diff --git a/src/xenvbd/blockring.h b/src/xenvbd/blockring.h index 4c94b6c..1117d73 100644 --- a/src/xenvbd/blockring.h +++ b/src/xenvbd/blockring.h @@ -94,10 +94,4 @@ BlockRingSubmit( IN PXENVBD_REQUEST Request ); -extern VOID -BlockRingAbort( - IN PXENVBD_BLOCKRING BlockRing, - IN PXENVBD_REQUEST Request - ); - #endif // _XENVBD_BLOCKRING_H diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c index 154dd8a..488a74b 100644 --- a/src/xenvbd/pdo.c +++ b/src/xenvbd/pdo.c @@ -1578,8 +1578,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 @@ -1592,7 +1591,6 @@ PdoPreResume( Request = CONTAINING_RECORD(Entry, XENVBD_REQUEST, Entry); SrbExt = GetSrbExt(Request->Srb); - BlockRingAbort(BlockRing, Request); PdoPutRequest(Pdo, Request); if (InterlockedDecrement(&SrbExt->Count) == 0) { -- 1.9.4.msysgit.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |