]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 25 Jan 2015 13:44:12 +0000 (21:44 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 25 Jan 2015 13:44:12 +0000 (21:44 +0800)
added patches:
storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch

queue-3.10/series
queue-3.10/storvsc-ring-buffer-failures-may-result-in-i-o-freeze.patch [new file with mode: 0644]

index b502ebc840edba6aac130f9c3fdeaf9a5308624c..85c50173f4b5d990615f92f5fe4bb51d98a0d7f1 100644 (file)
@@ -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 (file)
index 0000000..237b57f
--- /dev/null
@@ -0,0 +1,42 @@
+From e86fb5e8ab95f10ec5f2e9430119d5d35020c951 Mon Sep 17 00:00:00 2001
+From: Long Li <longli@microsoft.com>
+Date: Fri, 5 Dec 2014 19:38:18 -0800
+Subject: storvsc: ring buffer failures may result in I/O freeze
+
+From: Long Li <longli@microsoft.com>
+
+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 <longli@microsoft.com>
+Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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;