From 924f13b32ccf8b3c557cc151307b969dbf1573d1 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 12 Sep 2014 17:07:29 -0700 Subject: [PATCH] 3.16-stable patches added patches: drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch --- ...vsc-implement-a-eh_timed_out-handler.patch | 58 +++++++++++++++++++ ...-name-for-per-driver-cmd-slab-caches.patch | 37 ++++++++++++ queue-3.16/series | 2 + 3 files changed, 97 insertions(+) create mode 100644 queue-3.16/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch create mode 100644 queue-3.16/scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch diff --git a/queue-3.16/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch b/queue-3.16/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch new file mode 100644 index 00000000000..8ac519abe17 --- /dev/null +++ b/queue-3.16/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch @@ -0,0 +1,58 @@ +From 56b26e69c8283121febedd12b3cc193384af46b9 Mon Sep 17 00:00:00 2001 +From: "K. Y. Srinivasan" +Date: Sat, 12 Jul 2014 09:48:30 -0700 +Subject: Drivers: scsi: storvsc: Implement a eh_timed_out handler + +From: "K. Y. Srinivasan" + +commit 56b26e69c8283121febedd12b3cc193384af46b9 upstream. + +On Azure, we have seen instances of unbounded I/O latencies. To deal with +this issue, implement handler that can reset the timeout. Note that the +host gaurantees that it will respond to each command that has been issued. + +Signed-off-by: K. Y. Srinivasan +Reviewed-by: Hannes Reinecke +[hch: added a better comment explaining the issue] +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/storvsc_drv.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/drivers/scsi/storvsc_drv.c ++++ b/drivers/scsi/storvsc_drv.c +@@ -33,6 +33,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1518,6 +1519,16 @@ static int storvsc_host_reset_handler(st + return SUCCESS; + } + ++/* ++ * The host guarantees to respond to each command, although I/O latencies might ++ * be unbounded on Azure. Reset the timer unconditionally to give the host a ++ * chance to perform EH. ++ */ ++static enum blk_eh_timer_return storvsc_eh_timed_out(struct scsi_cmnd *scmnd) ++{ ++ return BLK_EH_RESET_TIMER; ++} ++ + static bool storvsc_scsi_cmd_ok(struct scsi_cmnd *scmnd) + { + bool allowed = true; +@@ -1687,6 +1698,7 @@ static struct scsi_host_template scsi_dr + .bios_param = storvsc_get_chs, + .queuecommand = storvsc_queuecommand, + .eh_host_reset_handler = storvsc_host_reset_handler, ++ .eh_timed_out = storvsc_eh_timed_out, + .slave_alloc = storvsc_device_alloc, + .slave_destroy = storvsc_device_destroy, + .slave_configure = storvsc_device_configure, diff --git a/queue-3.16/scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch b/queue-3.16/scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch new file mode 100644 index 00000000000..60882a21a77 --- /dev/null +++ b/queue-3.16/scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch @@ -0,0 +1,37 @@ +From 884ffee01ddde5af260c7a5d1359c658aa1f0a11 Mon Sep 17 00:00:00 2001 +From: James Bottomley +Date: Sat, 26 Jul 2014 12:21:26 -0400 +Subject: scsi: use short driver name for per-driver cmd slab caches + +From: James Bottomley + +commit 884ffee01ddde5af260c7a5d1359c658aa1f0a11 upstream. + +hostt->name might contain space, so use the ->proc_name short name instead +when creating per-driver command slabs. + +Signed-off-by: James Bottomley +Reported-by: poma +Tested-by: poma +Reviewed-by: Vladimir Davydov +Reviewed-by: Martin K. Petersen +Signed-off-by: Christoph Hellwig +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/scsi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/scsi.c ++++ b/drivers/scsi/scsi.c +@@ -368,8 +368,8 @@ scsi_alloc_host_cmd_pool(struct Scsi_Hos + if (!pool) + return NULL; + +- pool->cmd_name = kasprintf(GFP_KERNEL, "%s_cmd", hostt->name); +- pool->sense_name = kasprintf(GFP_KERNEL, "%s_sense", hostt->name); ++ pool->cmd_name = kasprintf(GFP_KERNEL, "%s_cmd", hostt->proc_name); ++ pool->sense_name = kasprintf(GFP_KERNEL, "%s_sense", hostt->proc_name); + if (!pool->cmd_name || !pool->sense_name) { + scsi_free_host_cmd_pool(pool); + return NULL; diff --git a/queue-3.16/series b/queue-3.16/series index 17a224c1f1b..8a7ff7ded7f 100644 --- a/queue-3.16/series +++ b/queue-3.16/series @@ -43,3 +43,5 @@ powerpc-thp-invalidate-old-64k-based-hash-page-mapping-before-insert-of-4k-pte.p powerpc-thp-handle-combo-pages-in-invalidate.patch powerpc-thp-invalidate-with-vpn-in-loop.patch powerpc-thp-use-access_once-when-loading-pmdp.patch +scsi-use-short-driver-name-for-per-driver-cmd-slab-caches.patch +drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch -- 2.47.3