patch-2.4.22 linux-2.4.22/drivers/scsi/ide-scsi.c
Next file: linux-2.4.22/drivers/scsi/megaraid.c
Previous file: linux-2.4.22/drivers/scsi/gdth.c
Back to the patch index
Back to the overall index
- Lines: 40
- Date:
2003-08-25 04:44:42.000000000 -0700
- Orig file:
linux-2.4.21/drivers/scsi/ide-scsi.c
- Orig date:
2003-06-13 07:51:36.000000000 -0700
diff -urN linux-2.4.21/drivers/scsi/ide-scsi.c linux-2.4.22/drivers/scsi/ide-scsi.c
@@ -1105,15 +1105,34 @@
int idescsi_reset (Scsi_Cmnd *cmd, unsigned int resetflags)
{
+ return SCSI_RESET_SNOOZE;
+
+#ifdef WORK_IN_PROGRESS
ide_drive_t *drive = idescsi_drives[cmd->target];
- /* We cannot reset the interface holding the lock. We can
- drop the lock here however */
+ /* At this point the state machine is running, that
+ requires we are especially careful. Ideally we want
+ to abort commands on timeout only if they hit the
+ cable but thats harder */
+
+ DRIVER(drive)->abort(drive, "scsi reset");
+ if(HWGROUP(drive)->handler)
+ BUG();
+
+ /* Ok the state machine is halted but make sure it
+ doesn't restart too early */
- spin_unlock(&io_request_lock);
- (void) ide_do_reset(drive);
- spin_lock(&io_request_lock);
+ HWGROUP(drive)->busy = 1;
+ spin_unlock_irq(&io_request_lock);
+
+ /* Apply the mallet of re-education firmly to the drive */
+ ide_do_reset(drive);
+
+ /* At this point the reset state machine is running and
+ its termination will kick off the next command */
+ spin_lock_irq(&io_request_lock);
return SCSI_RESET_SUCCESS;
+#endif
}
int idescsi_bios (Disk *disk, kdev_t dev, int *parm)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)