[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Make sure we don't leave SRBs in state PENDING
When we fail to prepare an SRB, it should not be left in state PENDING otherwise Windows will expect a completion at some point. Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> --- src/xenvbd/pdo.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/xenvbd/pdo.c b/src/xenvbd/pdo.c index 79512d9..8e28b3c 100644 --- a/src/xenvbd/pdo.c +++ b/src/xenvbd/pdo.c @@ -1170,7 +1170,6 @@ PrepareReadWrite( InitializeListHead(&List); SrbExt->Count = 0; - Srb->SrbStatus = SRB_STATUS_PENDING; RtlZeroMemory(&SGList, sizeof(SGList)); SGList.SGList = StorPortGetScatterGatherList(PdoGetFdo(Pdo), Srb); @@ -1207,12 +1206,14 @@ PrepareReadWrite( } SrbExt->Count = PdoQueueRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_PENDING; return TRUE; fail3: fail2: fail1: PdoCancelRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_ERROR; return FALSE; } @@ -1235,7 +1236,6 @@ PrepareSyncCache( InitializeListHead(&List); SrbExt->Count = 0; - Srb->SrbStatus = SRB_STATUS_PENDING; Request = PdoGetRequest(Pdo); if (Request == NULL) @@ -1247,10 +1247,12 @@ PrepareSyncCache( Request->FirstSector = Cdb_LogicalBlock(Srb); SrbExt->Count = PdoQueueRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_PENDING; return TRUE; fail1: PdoCancelRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_ERROR; return FALSE; } @@ -1269,7 +1271,6 @@ PrepareUnmap( InitializeListHead(&List); SrbExt->Count = 0; - Srb->SrbStatus = SRB_STATUS_PENDING; for (Index = 0; Index < Count; ++Index) { PUNMAP_BLOCK_DESCRIPTOR Descr = &Unmap->Descriptors[Index]; @@ -1288,10 +1289,12 @@ PrepareUnmap( } SrbExt->Count = PdoQueueRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_PENDING; return TRUE; fail1: PdoCancelRequestList(Pdo, &List); + Srb->SrbStatus = SRB_STATUS_ERROR; return FALSE; } @@ -1414,6 +1417,7 @@ PdoPrepareFresh( break; } QueueUnPop(&Pdo->FreshSrbs, &SrbExt->Entry); + return FALSE; // prepare failed } -- 2.5.3 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |