|
@@ -1542,9 +1542,7 @@ part2:
|
|
|
hostdata->connected = cmd;
|
|
|
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
|
|
|
|
|
- if (cmd->SCp.ptr != (char *)cmd->sense_buffer) {
|
|
|
- initialize_SCp(cmd);
|
|
|
- }
|
|
|
+ initialize_SCp(cmd);
|
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -2280,19 +2278,16 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
|
|
cmd->result = (cmd->result & 0x00ffff) | (DID_ERROR << 16);
|
|
|
|
|
|
#ifdef AUTOSENSE
|
|
|
+ if ((cmd->cmnd[0] == REQUEST_SENSE) &&
|
|
|
+ hostdata->ses.cmd_len) {
|
|
|
+ scsi_eh_restore_cmnd(cmd, &hostdata->ses);
|
|
|
+ hostdata->ses.cmd_len = 0 ;
|
|
|
+ }
|
|
|
+
|
|
|
if ((cmd->cmnd[0] != REQUEST_SENSE) && (status_byte(cmd->SCp.Status) == CHECK_CONDITION)) {
|
|
|
+ scsi_eh_prep_cmnd(cmd, &hostdata->ses, NULL, 0, ~0);
|
|
|
+
|
|
|
dprintk(NDEBUG_AUTOSENSE, ("scsi%d : performing request sense\n", instance->host_no));
|
|
|
- cmd->cmnd[0] = REQUEST_SENSE;
|
|
|
- cmd->cmnd[1] &= 0xe0;
|
|
|
- cmd->cmnd[2] = 0;
|
|
|
- cmd->cmnd[3] = 0;
|
|
|
- cmd->cmnd[4] = sizeof(cmd->sense_buffer);
|
|
|
- cmd->cmnd[5] = 0;
|
|
|
-
|
|
|
- cmd->SCp.buffer = NULL;
|
|
|
- cmd->SCp.buffers_residual = 0;
|
|
|
- cmd->SCp.ptr = (char *) cmd->sense_buffer;
|
|
|
- cmd->SCp.this_residual = sizeof(cmd->sense_buffer);
|
|
|
|
|
|
LIST(cmd, hostdata->issue_queue);
|
|
|
cmd->host_scribble = (unsigned char *)
|