mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
Fixed the reinitialisation if the miniport driver returns SRB_STATUS_BUSY.
svn path=/trunk/; revision=18104
This commit is contained in:
parent
f9ac23ee7b
commit
406b5036aa
1 changed files with 9 additions and 1 deletions
|
@ -2888,8 +2888,15 @@ SpiProcessRequests(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
|||
|
||||
if (Srb->SrbStatus == SRB_STATUS_BUSY)
|
||||
{
|
||||
CompleteThisRequest = FALSE;
|
||||
Irp->Tail.Overlay.DriverContext[3] = Srb;
|
||||
|
||||
SpiRemoveActiveIrp(DeviceExtension, Irp, PrevIrp);
|
||||
SpiFreeSrbExtension(DeviceExtension, OriginalSrb);
|
||||
|
||||
Srb->OriginalRequest = LunExtension;
|
||||
Irp->Tail.Overlay.DriverContext[2] = 0;
|
||||
|
||||
InsertHeadList(&DeviceExtension->PendingIrpListHead, (PLIST_ENTRY)&Irp->Tail.Overlay.DriverContext[0]);
|
||||
DeviceExtension->PendingIrpCount++;
|
||||
LunExtension->PendingIrpCount++;
|
||||
|
@ -2915,6 +2922,7 @@ SpiProcessRequests(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
|||
SenseInfoBuffer,
|
||||
sizeof(SENSE_DATA));
|
||||
OriginalSrb->SrbStatus |= SRB_STATUS_AUTOSENSE_VALID;
|
||||
OriginalSrb->SrbExtension = Srb->SrbExtension;
|
||||
ExFreePool(Srb);
|
||||
CompleteThisRequest = TRUE;
|
||||
}
|
||||
|
@ -2933,7 +2941,7 @@ SpiProcessRequests(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
|||
CompleteThisRequest = FALSE;
|
||||
Irp->Tail.Overlay.DriverContext[3] = Srb;
|
||||
SpiRemoveActiveIrp(DeviceExtension, Irp, PrevIrp);
|
||||
SpiFreeSrbExtension(DeviceExtension, Srb);
|
||||
SpiFreeSrbExtension(DeviceExtension, OriginalSrb);
|
||||
|
||||
Srb->OriginalRequest = LunExtension;
|
||||
Irp->Tail.Overlay.DriverContext[2] = 0;
|
||||
|
|
Loading…
Reference in a new issue