diff options
Diffstat (limited to 'drivers/scsi/scsi_error.c')
| -rw-r--r-- | drivers/scsi/scsi_error.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index dc6131e6a1ba..5f84a148eb14 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -1812,7 +1812,7 @@ int scsi_error_handler(void *data)  		 * what we need to do to get it up and online again (if we can).  		 * If we fail, we end up taking the thing offline.  		 */ -		if (scsi_autopm_get_host(shost) != 0) { +		if (!shost->eh_noresume && scsi_autopm_get_host(shost) != 0) {  			SCSI_LOG_ERROR_RECOVERY(1,  				printk(KERN_ERR "Error handler scsi_eh_%d "  						"unable to autoresume\n", @@ -1833,7 +1833,8 @@ int scsi_error_handler(void *data)  		 * which are still online.  		 */  		scsi_restart_operations(shost); -		scsi_autopm_put_host(shost); +		if (!shost->eh_noresume) +			scsi_autopm_put_host(shost);  		set_current_state(TASK_INTERRUPTIBLE);  	}  	__set_current_state(TASK_RUNNING);  |