From: Owen Smith Date: Tue, 20 May 2014 08:53:58 +0000 (+0100) Subject: Refactor: internalize request preparation functions into a single call X-Git-Tag: 8.1.0-rc1~57^2~5 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8064d050488ce20f91c3bdb50d01b2c1b615d7a0;p=pvdrivers%2Fwin%2Fxenvbd.git Refactor: internalize request preparation functions into a single call Signed-off-by: Owen Smith --- diff --git a/src/xenvbd/blockring.c b/src/xenvbd/blockring.c index 972b923..0d76c3c 100644 --- a/src/xenvbd/blockring.c +++ b/src/xenvbd/blockring.c @@ -497,7 +497,7 @@ BlockRingPoll( if (__BlockRingPutTag(BlockRing, Response->id, &Tag)) { ++BlockRing->Recieved; --BlockRing->Outstanding; - PdoCompleteSubmitted(Pdo, Tag, Response->status); + PdoCompleteResponse(Pdo, Tag, Response->status); } RtlZeroMemory(Response, sizeof(union blkif_sring_entry)); diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c index 38d70a1..06c0be0 100644 --- a/src/xenvbd/frontend.c +++ b/src/xenvbd/frontend.c @@ -300,9 +300,7 @@ FrontendNotifyResponses( ) { BlockRingPoll(Frontend->BlockRing); - PdoPrepareFresh(Frontend->Pdo); - PdoSubmitPrepared(Frontend->Pdo); - PdoCompleteShutdown(Frontend->Pdo); + PdoSubmitRequests(Frontend->Pdo); } //============================================================================= diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c index 912f94c..b944024 100644 --- a/src/xenvbd/pdo.c +++ b/src/xenvbd/pdo.c @@ -1541,7 +1541,7 @@ PrepareUnmap( //============================================================================= // Queue-Related -VOID +static FORCEINLINE VOID PdoPrepareFresh( __in PXENVBD_PDO Pdo ) @@ -1580,7 +1580,7 @@ PdoPrepareFresh( } } -VOID +static FORCEINLINE VOID PdoSubmitPrepared( __in PXENVBD_PDO Pdo ) @@ -1609,6 +1609,30 @@ PdoSubmitPrepared( } } +static FORCEINLINE VOID +PdoCompleteShutdown( + __in PXENVBD_PDO Pdo + ) +{ + if (QueueCount(&Pdo->ShutdownSrbs) == 0) + return; + + if (QueueCount(&Pdo->FreshSrbs) || + QueueCount(&Pdo->PreparedReqs) || + QueueCount(&Pdo->SubmittedReqs)) + return; + + for (;;) { + PXENVBD_SRBEXT SrbExt; + PLIST_ENTRY Entry = QueuePop(&Pdo->ShutdownSrbs); + if (Entry == NULL) + break; + SrbExt = CONTAINING_RECORD(Entry, XENVBD_SRBEXT, Entry); + SrbExt->Srb->SrbStatus = SRB_STATUS_SUCCESS; + FdoCompleteSrb(PdoGetFdo(Pdo), SrbExt->Srb); + } +} + static FORCEINLINE PCHAR BlkifOperationName( IN UCHAR Operation @@ -1627,7 +1651,17 @@ BlkifOperationName( } VOID -PdoCompleteSubmitted( +PdoSubmitRequests( + __in PXENVBD_PDO Pdo + ) +{ + PdoPrepareFresh(Pdo); + PdoSubmitPrepared(Pdo); + PdoCompleteShutdown(Pdo); +} + +VOID +PdoCompleteResponse( __in PXENVBD_PDO Pdo, __in ULONG Tag, __in SHORT Status @@ -1685,30 +1719,6 @@ PdoCompleteSubmitted( } } -VOID -PdoCompleteShutdown( - __in PXENVBD_PDO Pdo - ) -{ - if (QueueCount(&Pdo->ShutdownSrbs) == 0) - return; - - if (QueueCount(&Pdo->FreshSrbs) || - QueueCount(&Pdo->PreparedReqs) || - QueueCount(&Pdo->SubmittedReqs)) - return; - - for (;;) { - PXENVBD_SRBEXT SrbExt; - PLIST_ENTRY Entry = QueuePop(&Pdo->ShutdownSrbs); - if (Entry == NULL) - break; - SrbExt = CONTAINING_RECORD(Entry, XENVBD_SRBEXT, Entry); - SrbExt->Srb->SrbStatus = SRB_STATUS_SUCCESS; - FdoCompleteSrb(PdoGetFdo(Pdo), SrbExt->Srb); - } -} - VOID PdoPreResume( __in PXENVBD_PDO Pdo diff --git a/src/xenvbd/pdo.h b/src/xenvbd/pdo.h index 6cab599..85c753e 100644 --- a/src/xenvbd/pdo.h +++ b/src/xenvbd/pdo.h @@ -178,27 +178,17 @@ PdoSectorSize( // Queue-Related extern VOID -PdoPrepareFresh( +PdoSubmitRequests( __in PXENVBD_PDO Pdo ); extern VOID -PdoSubmitPrepared( - __in PXENVBD_PDO Pdo - ); - -extern VOID -PdoCompleteSubmitted( +PdoCompleteResponse( __in PXENVBD_PDO Pdo, __in ULONG Tag, __in SHORT Status ); -extern VOID -PdoCompleteShutdown( - __in PXENVBD_PDO Pdo - ); - extern VOID PdoPreResume( __in PXENVBD_PDO Pdo