From f328de8655f3a0f3f8edcdc46dc35ae99e340aab Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 12 Sep 2014 17:07:27 -0700 Subject: [PATCH] 3.14-stable patches added patches: drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch --- ...vsc-implement-a-eh_timed_out-handler.patch | 58 +++++++++++++++++++ queue-3.14/series | 1 + 2 files changed, 59 insertions(+) create mode 100644 queue-3.14/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch diff --git a/queue-3.14/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch b/queue-3.14/drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch new file mode 100644 index 00000000000..8ac519abe17 --- /dev/null +++ b/queue-3.14/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.14/series b/queue-3.14/series index d9e24a80243..96782f8a46a 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -28,3 +28,4 @@ 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 +drivers-scsi-storvsc-implement-a-eh_timed_out-handler.patch -- 2.47.3