aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShaohua Li <shli@kernel.org>2015-05-13 12:30:08 -0400
committerNeilBrown <neilb@suse.de>2015-05-20 19:14:20 -0400
commit487696957e3bd64ccffe62c0ac4ff7bf662785ab (patch)
treebc03d9ac49f4344fea737912783f5f9c9624094e
parentbb27051f9fd7643f05d8f0babce3337f0b9b3087 (diff)
raid5: fix broken async operation chain
ops_run_reconstruct6() doesn't correctly chain asyn operations. The tx returned by async_gen_syndrome should be added as the dependent tx of next stripe. The issue is introduced by commit 59fc630b8b5f9f21c8ce3ba153341c107dce1b0c RAID5: batch adjacent full stripe write Reported-and-tested-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--drivers/md/raid5.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 1ba97fdc6df1..b9f2b9cc6060 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -1822,7 +1822,7 @@ again:
1822 } else 1822 } else
1823 init_async_submit(&submit, 0, tx, NULL, NULL, 1823 init_async_submit(&submit, 0, tx, NULL, NULL,
1824 to_addr_conv(sh, percpu, j)); 1824 to_addr_conv(sh, percpu, j));
1825 async_gen_syndrome(blocks, 0, count+2, STRIPE_SIZE, &submit); 1825 tx = async_gen_syndrome(blocks, 0, count+2, STRIPE_SIZE, &submit);
1826 if (!last_stripe) { 1826 if (!last_stripe) {
1827 j++; 1827 j++;
1828 sh = list_first_entry(&sh->batch_list, struct stripe_head, 1828 sh = list_first_entry(&sh->batch_list, struct stripe_head,