Skip to contentSkip to conversation

fix problem in sym2 auto request sense

PATCH New James Bottomley 1 participant 1 message Mar 21, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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 */