Skip to contentSkip to conversation

ibmvscsi: Non SCSI error status fixup

PATCH New Brian King 3 participants 4 messages May 19, 2008 – May 20, 2008

Subsystems (3)
lore
Share & tools
lore

Brian King

author
#0 lore raw

PATCH 1/1 ibmvscsi: Non SCSI error status fixup

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.

---

 linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c |    2 +-
 linux-2.6-bjking1/drivers/scsi/ibmvscsi/viosrp.h   |    3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
drivers/scsi/ibmvscsi/viosrp.h renamed from drivers/scsi/ibmvscsi/viosrp.h~ibmvscsi_non_scsi_status_workaround +2 -1
diff -puN drivers/scsi/ibmvscsi/viosrp.h~ibmvscsi_non_scsi_status_workaround drivers/scsi/ibmvscsi/viosrp.h
@@ -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 {
drivers/scsi/ibmvscsi/ibmvscsi.c renamed from drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_non_scsi_status_workaround +1 -1
diff -puN drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_non_scsi_status_workaround drivers/scsi/ibmvscsi/ibmvscsi.c
@@ -1348,7 +1348,7 @@ void ibmvscsi_handle_crq(struct viosrp_c
 
 	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);

_

#1 lore raw

PATCH 1/1 ibmvscsi: Non SCSI error status fixup

Quoted 5 lines · Brian King

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.

Yeah....0x99...that's an intuitive value for success.

Dave B

#2 lore raw
Quoted 8 lines · Dave Boutcher
Quoted 5 lines · Brian King

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.

Yeah....0x99...that's an intuitive value for success.

Hopefully there are no versions that return 0x99 for an error? :)

cheers

Signature · 8 lines
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
author
#3 lore raw
Quoted 9 lines · Michael Ellerman
Quoted 6 lines · Dave Boutcher
Quoted 4 lines · Brian King

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.

Yeah....0x99...that's an intuitive value for success.

Hopefully there are no versions that return 0x99 for an error? :)

There shouldn't be. 0x99 is actually not defined as a valid value for that field, but it is what the ibmvscsis VIOS that is included in SLES 9 and SLES 10 return on success, due to a bug in that driver. We plan to fix the ibmvscsis driver as well, but it will take a while for that fix to propagate. Until very recently, the status field was not checked, which is why we are only recently running into this problem.

-Brian

Signature · 3 lines
Brian King
Linux on Power Virtualization
IBM Linux Technology Center