[SCSI] ibmvscsi: Non SCSI error status fixup
authorBrian King <brking@linux.vnet.ibm.com>
Mon, 19 May 2008 15:27:56 +0000 (10:27 -0500)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Tue, 27 May 2008 16:10:57 +0000 (11:10 -0500)
Some versions of the Virtual I/O Server on Power
return 0x99 in the non-SCSI error status field as success,
rather than 0. This fixes the ibmvscsi driver to treat this
response as success.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/ibmvscsi/viosrp.h

index ccfd8aca3765875cf7cf4711aba0aa8bfbb6fb09..5d23368a1bcee68e31bc04019cd696118132bea0 100644 (file)
@@ -1348,7 +1348,7 @@ void ibmvscsi_handle_crq(struct viosrp_crq *crq,
 
        del_timer(&evt_struct->timer);
 
-       if (crq->status != VIOSRP_OK && evt_struct->cmnd)
+       if ((crq->status != VIOSRP_OK && crq->status != VIOSRP_OK2) && evt_struct->cmnd)
                evt_struct->cmnd->result = DID_ERROR << 16;
        if (evt_struct->done)
                evt_struct->done(evt_struct);
index 4c4aadb3e405fa9f4e8a2d8a1aa6cf4cf438daf9..204604501ad8cc347a3c01bc27205fc2bf614982 100644 (file)
@@ -65,7 +65,8 @@ enum viosrp_crq_status {
        VIOSRP_VIOLATES_MAX_XFER = 0x2,
        VIOSRP_PARTNER_PANIC = 0x3,
        VIOSRP_DEVICE_BUSY = 0x8,
-       VIOSRP_ADAPTER_FAIL = 0x10
+       VIOSRP_ADAPTER_FAIL = 0x10,
+       VIOSRP_OK2 = 0x99,
 };
 
 struct viosrp_crq {