diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/scsi/scsi_sysfs.c | 6 | 
1 files changed, 6 insertions, 0 deletions
| diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 6a9040faed00..3b119ca0cc0c 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -771,6 +771,12 @@ store_state_field(struct device *dev, struct device_attribute *attr,  	mutex_lock(&sdev->state_mutex);  	ret = scsi_device_set_state(sdev, state); +	/* +	 * If the device state changes to SDEV_RUNNING, we need to run +	 * the queue to avoid I/O hang. +	 */ +	if (ret == 0 && state == SDEV_RUNNING) +		blk_mq_run_hw_queues(sdev->request_queue, true);  	mutex_unlock(&sdev->state_mutex);  	return ret == 0 ? count : -EINVAL; | 
