fix problem in sym2 auto request sense
PATCH 1/1 fix problem in sym2 auto request sense
sym2 currently returns DID_ERROR if its auto request sense fails for some reason. This is wrong because it leaves a contingent allegiance condition on the device and it will ever after return BUSY to all commands.
I tripped this in the somewhat artificial situation of two wide devices connected over a narrow bus (the DATA phase of the request sense can thus never complete successfully).
The solution is to kick the device very hard in this rare scenario.
James
===== drivers/scsi/sym53c8xx_2/sym_glue.c 1.44 vs edited =====
drivers/scsi/sym53c8xx_2/sym_glue.c +6 -0
@@ -384,6 +384,12 @@ }#endif }else { +/* Error return from our internal request +* sense. This is bad: we must clear the +* contingent allegiance condition otherwise +* the device will always return BUSY. Use a +* big stick */ +sym_reset_scsi_bus (np,1 ); cam_status =DID_ERROR ; } }else if (cp->host_status ==HS_COMPLETE )/* Bad SCSI status */