diff options
author | K. Y. Srinivasan <kys@microsoft.com> | 2013-06-04 12:05:05 -0700 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-06-26 19:54:49 -0700 |
commit | 893def38211980cf9581a74dfdc66be4d77a1db6 (patch) | |
tree | 9fb7b4b6a2728b7707cfa54cf621353042f8a0cb /drivers/scsi/storvsc_drv.c | |
parent | 1f34923c8a7d5512757318ff728fef24b1f50c9a (diff) | |
download | blackbird-op-linux-893def38211980cf9581a74dfdc66be4d77a1db6.tar.gz blackbird-op-linux-893def38211980cf9581a74dfdc66be4d77a1db6.zip |
[SCSI] storvsc: Increase the value of scsi timeout for storvsc devices
The standard scsi timeout is not appropriate in some of the environments where
Hyper-V is deployed. Set this timeout appropriately for all devices managed
by this driver.
On cloud environments where storage latencies may be unbounded, having the
scsi layer initiating recovery can be problematic since (a) the host is
already implementing a variety of recovery strategies and (b) implementing a
recovery strategy at the VM level may be more appropriate in cases where
storage latencies exceed a certain threshold.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/storvsc_drv.c')
-rw-r--r-- | drivers/scsi/storvsc_drv.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c index 16a3a0cc9672..ede8694781d6 100644 --- a/drivers/scsi/storvsc_drv.c +++ b/drivers/scsi/storvsc_drv.c @@ -221,6 +221,11 @@ static int storvsc_ringbuffer_size = (20 * PAGE_SIZE); module_param(storvsc_ringbuffer_size, int, S_IRUGO); MODULE_PARM_DESC(storvsc_ringbuffer_size, "Ring buffer size (bytes)"); +/* + * Timeout in seconds for all devices managed by this driver. + */ +static int storvsc_timeout = 180; + #define STORVSC_MAX_IO_REQUESTS 128 /* @@ -1204,6 +1209,8 @@ static int storvsc_device_configure(struct scsi_device *sdevice) blk_queue_bounce_limit(sdevice->request_queue, BLK_BOUNCE_ANY); + blk_queue_rq_timeout(sdevice->request_queue, (storvsc_timeout * HZ)); + sdevice->no_write_same = 1; return 0; |