Revision: 18437
          http://sourceforge.net/p/edk2/code/18437
Author:   lersek
Date:     2015-09-10 11:25:02 +0000 (Thu, 10 Sep 2015)
Log Message:
-----------
MdeModulePkg: ScsiDiskDxe: recognize EFI_BAD_BUFFER_SIZE

Acting specifically upon this error condition from UefiScsiLib (and
ultimately from EFI_EXT_SCSI_PASS_THRU_PROTOCOL.PassThru()) in the

- ScsiDiskRead10(),
- ScsiDiskWrite10(),
- ScsiDiskRead16(),
- ScsiDiskWrite16()

functions allows us to retry these operations from ScsiDiskReadSectors()
and ScsiDiskWriteSectors(), with adjusted transfer sizes, without
investigating further error details like Host Adapter Status, Target
Status, and Sense Data.

Cc: Feng Tian <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <[email protected]>
Reviewed-by: Feng Tian <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c

Modified: trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
===================================================================
--- trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c     2015-09-10 
09:51:00 UTC (rev 18436)
+++ trunk/edk2/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c     2015-09-10 
11:25:02 UTC (rev 18437)
@@ -2107,7 +2107,7 @@
                    SectorCount
                    );
 
-  if (ReturnStatus == EFI_NOT_READY) {
+  if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {
     *NeedRetry = TRUE;
     return EFI_DEVICE_ERROR;
   } else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == 
EFI_UNSUPPORTED)) {
@@ -2231,7 +2231,7 @@
                    StartLba,
                    SectorCount
                    );
-  if (ReturnStatus == EFI_NOT_READY) {
+  if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {
     *NeedRetry = TRUE;
     return EFI_DEVICE_ERROR;
   } else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == 
EFI_UNSUPPORTED)) {
@@ -2354,7 +2354,7 @@
                    StartLba,
                    SectorCount
                    );
-  if (ReturnStatus == EFI_NOT_READY) {
+  if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {
     *NeedRetry = TRUE;
     return EFI_DEVICE_ERROR;
   } else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == 
EFI_UNSUPPORTED)) {
@@ -2478,7 +2478,7 @@
                    StartLba,
                    SectorCount
                    );
-  if (ReturnStatus == EFI_NOT_READY) {
+  if (ReturnStatus == EFI_NOT_READY || ReturnStatus == EFI_BAD_BUFFER_SIZE) {
     *NeedRetry = TRUE;
     return EFI_DEVICE_ERROR;
   } else if ((ReturnStatus == EFI_INVALID_PARAMETER) || (ReturnStatus == 
EFI_UNSUPPORTED)) {


------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to