diff options
Diffstat (limited to 'drivers/scsi/scsi_error.c')
| -rw-r--r-- | drivers/scsi/scsi_error.c | 24 | 
1 files changed, 7 insertions, 17 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 1de30eb83bb..824b8fc03ce 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -320,19 +320,11 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)  				    "changed. The Linux SCSI layer does not "  				    "automatically adjust these parameters.\n"); -		if (scmd->request->cmd_flags & REQ_HARDBARRIER) -			/* -			 * barrier requests should always retry on UA -			 * otherwise block will get a spurious error -			 */ -			return NEEDS_RETRY; -		else -			/* -			 * for normal (non barrier) commands, pass the -			 * UA upwards for a determination in the -			 * completion functions -			 */ -			return SUCCESS; +		/* +		 * Pass the UA upwards for a determination in the completion +		 * functions. +		 */ +		return SUCCESS;  		/* these three are not supported */  	case COPY_ABORTED: @@ -781,17 +773,15 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd,  	struct Scsi_Host *shost = sdev->host;  	DECLARE_COMPLETION_ONSTACK(done);  	unsigned long timeleft; -	unsigned long flags;  	struct scsi_eh_save ses;  	int rtn;  	scsi_eh_prep_cmnd(scmd, &ses, cmnd, cmnd_size, sense_bytes);  	shost->eh_action = &done; -	spin_lock_irqsave(shost->host_lock, flags);  	scsi_log_send(scmd); -	shost->hostt->queuecommand(scmd, scsi_eh_done); -	spin_unlock_irqrestore(shost->host_lock, flags); +	scmd->scsi_done = scsi_eh_done; +	shost->hostt->queuecommand(shost, scmd);  	timeleft = wait_for_completion_timeout(&done, timeout);  |