From: Greg Kroah-Hartman Date: Sun, 25 Jan 2015 13:44:12 +0000 (+0800) Subject: 3.10-stable patches X-Git-Tag: v3.10.66~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=22844b9c21e26ee813f8aed7ecf3a864c9f2e0ad;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch --- diff --git a/queue-3.10/series b/queue-3.10/series index b502ebc840e..85c50173f4b 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -13,3 +13,4 @@ arc-move-peripherals-to-match-model-to-fpga.patch cfg80211-fix-160-mhz-channels-with-80-80-and-160-mhz-drivers.patch hp_accel-add-support-for-hp-zbook-15.patch iscsi-target-fail-connection-on-short-sendmsg-writes.patch +storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch diff --git a/queue-3.10/storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch b/queue-3.10/storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch new file mode 100644 index 00000000000..237b57f3f6d --- /dev/null +++ b/queue-3.10/storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch @@ -0,0 +1,42 @@ +From e86fb5e8ab95f10ec5f2e9430119d5d35020c951 Mon Sep 17 00:00:00 2001 +From: Long Li +Date: Fri, 5 Dec 2014 19:38:18 -0800 +Subject: storvsc: ring buffer failures may result in I/O freeze + +From: Long Li + +commit e86fb5e8ab95f10ec5f2e9430119d5d35020c951 upstream. + +When ring buffer returns an error indicating retry, storvsc may not +return a proper error code to SCSI when bounce buffer is not used. +This has introduced I/O freeze on RAID running atop storvsc devices. +This patch fixes it by always returning a proper error code. + +Signed-off-by: Long Li +Reviewed-by: K. Y. Srinivasan +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/storvsc_drv.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/drivers/scsi/storvsc_drv.c ++++ b/drivers/scsi/storvsc_drv.c +@@ -1439,13 +1439,12 @@ static int storvsc_queuecommand(struct S + if (ret == -EAGAIN) { + /* no more space */ + +- if (cmd_request->bounce_sgl_count) { ++ if (cmd_request->bounce_sgl_count) + destroy_bounce_buffer(cmd_request->bounce_sgl, + cmd_request->bounce_sgl_count); + +- ret = SCSI_MLQUEUE_DEVICE_BUSY; +- goto queue_error; +- } ++ ret = SCSI_MLQUEUE_DEVICE_BUSY; ++ goto queue_error; + } + + return 0;