summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOfer Heifetz <oferh@marvell.com>2017-07-24 09:17:40 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-08-06 09:21:09 -0700
commit9425c1fdc48d3a05ea332b19454cc690faec3ee8 (patch)
tree45cc11a10f9fb09d9d496dfa78fe7af037b8d36a
parent270c1bc38fc531662bddd64a835f4afd83a9562d (diff)
downloadtalos-op-linux-9425c1fdc48d3a05ea332b19454cc690faec3ee8.tar.gz
talos-op-linux-9425c1fdc48d3a05ea332b19454cc690faec3ee8.zip
md/raid5: add thread_group worker async_tx_issue_pending_all
commit 7e96d559634b73a8158ee99a7abece2eacec2668 upstream. Since thread_group worker and raid5d kthread are not in sync, if worker writes stripe before raid5d then requests will be waiting for issue_pendig. Issue observed when building raid5 with ext4, in some build runs jbd2 would get hung and requests were waiting in the HW engine waiting to be issued. Fix this by adding a call to async_tx_issue_pending_all in the raid5_do_work. Signed-off-by: Ofer Heifetz <oferh@marvell.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/md/raid5.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index d524daddc630..e92dd2dc4b5a 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -6237,6 +6237,8 @@ static void raid5_do_work(struct work_struct *work)
pr_debug("%d stripes handled\n", handled);
spin_unlock_irq(&conf->device_lock);
+
+ async_tx_issue_pending_all();
blk_finish_plug(&plug);
pr_debug("--- raid5worker inactive\n");
OpenPOWER on IntegriCloud