diff -ru linux-2.6.20-rc3/drivers/message/fusion/mptscsih.c linux-2.6.20-rc3.vmware_patch/drivers/message/fusion/mptscsih.c --- linux-2.6.20-rc3/drivers/message/fusion/mptscsih.c 2007-01-09 15:10:28.000019000 -0500 +++ linux-2.6.20-rc3.vmware_patch/drivers/message/fusion/mptscsih.c 2007-01-09 15:46:26.000105000 -0500 @@ -769,7 +769,7 @@ case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR: /* 0x0040 */ case MPI_IOCSTATUS_SUCCESS: /* 0x0000 */ if (scsi_status == MPI_SCSI_STATUS_BUSY) - sc->result = (DID_BUS_BUSY << 16) | scsi_status; + sc->result = (DID_QUALIFIED_REQUEUE << 16) | scsi_status; else sc->result = (DID_OK << 16) | scsi_status; if (scsi_state == 0) { diff -ru linux-2.6.20-rc3/drivers/scsi/scsi_error.c linux-2.6.20-rc3.vmware_patch/drivers/scsi/scsi_error.c --- linux-2.6.20-rc3/drivers/scsi/scsi_error.c 2007-01-09 14:40:16.000022000 -0500 +++ linux-2.6.20-rc3.vmware_patch/drivers/scsi/scsi_error.c 2007-01-09 15:55:48.000051000 -0500 @@ -1216,6 +1216,14 @@ case DID_IMM_RETRY: return NEEDS_RETRY; + case DID_QUALIFIED_REQUEUE: + /* + * Return immediately w/o requeue if the request + * indicates no retry. + */ + if (blk_noretry_request(scmd->request)) { + return SUCCESS; + } case DID_REQUEUE: return ADD_TO_MLQUEUE; diff -ru linux-2.6.20-rc3/include/scsi/scsi.h linux-2.6.20-rc3.vmware_patch/include/scsi/scsi.h --- linux-2.6.20-rc3/include/scsi/scsi.h 2007-01-09 15:07:30.000009000 -0500 +++ linux-2.6.20-rc3.vmware_patch/include/scsi/scsi.h 2007-01-09 15:45:41.000075000 -0500 @@ -309,6 +309,8 @@ #define DID_IMM_RETRY 0x0c /* Retry without decrementing retry count */ #define DID_REQUEUE 0x0d /* Requeue command (no immediate retry) also * without decrementing the retry count */ +#define DID_QUALIFIED_REQUEUE 0x0e /* Requeue cmd w/o decr of retry count IFF + * not blk_noretry_request */ #define DRIVER_OK 0x00 /* Driver status */ /*