Re: constant bus resets with aic7xxx and 2.4.0-test1-ac7 (fwd)

From: Guus Sliepen (guus@warande3094.warande.uu.nl)
Date: Wed Jun 07 2000 - 12:42:39 EST


Apply this patch Stephen J. Gowdy sent two days ago. Next time, dig
through the archives first!

Met vriendelijke groet,
Guus Sliepen.


--- /opt/kernel/linux-2.4.0-test1-ac6/drivers/scsi/scsi_scan.c Wed May 31 00:14:25 2000
+++ drivers/scsi/scsi_scan.c Wed May 31 00:14:18 2000
@@ -483,7 +483,38 @@
         SDpnt->expecting_cc_ua = 0;
         SDpnt->starved = 0;
 
+ scsi_cmd[0] = TEST_UNIT_READY;
+ scsi_cmd[1] = lun << 5;
+ scsi_cmd[2] = scsi_cmd[3] = scsi_cmd[4] = scsi_cmd[5] = 0;
+
         SRpnt = scsi_allocate_request(SDpnt);
+
+ SRpnt->sr_data_direction = SCSI_DATA_NONE;
+ scsi_wait_req (SRpnt, (void *) scsi_cmd,
+ (void *) NULL,
+ 0, SCSI_TIMEOUT + 4 * HZ, 5);
+
+ SCSI_LOG_SCAN_BUS(3, printk("scsi: scan_scsis_single id %d lun %d. Return code 0x%08x\n",
+ dev, lun, SRpnt->sr_result));
+ SCSI_LOG_SCAN_BUS(3, print_driverbyte(SRpnt->sr_result));
+ SCSI_LOG_SCAN_BUS(3, print_hostbyte(SRpnt->sr_result));
+ SCSI_LOG_SCAN_BUS(3, printk("\n"));
+
+ if (SRpnt->sr_result) {
+ if (((driver_byte(SRpnt->sr_result) & DRIVER_SENSE) ||
+ (status_byte(SRpnt->sr_result) & CHECK_CONDITION)) &&
+ ((SRpnt->sr_sense_buffer[0] & 0x70) >> 4) == 7) {
+ if (((SRpnt->sr_sense_buffer[2] & 0xf) != NOT_READY) &&
+ ((SRpnt->sr_sense_buffer[2] & 0xf) != UNIT_ATTENTION) &&
+ ((SRpnt->sr_sense_buffer[2] & 0xf) != ILLEGAL_REQUEST || lun > 0)) {
+ scsi_release_request(SRpnt);
+ return 1;
+ }
+ } else {
+ scsi_release_request(SRpnt);
+ return 0;
+ }
+ }
 
         /*
          * We used to do a TEST_UNIT_READY before the INQUIRY but that was

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jun 07 2000 - 21:00:29 EST