diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/raid5.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index a5aad8cad843..e8c8157b02fc 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -2865,7 +2865,8 @@ static void handle_stripe5(struct stripe_head *sh) | |||
2865 | md_done_sync(conf->mddev, STRIPE_SECTORS, 1); | 2865 | md_done_sync(conf->mddev, STRIPE_SECTORS, 1); |
2866 | } | 2866 | } |
2867 | 2867 | ||
2868 | if (s.expanding && s.locked == 0) | 2868 | if (s.expanding && s.locked == 0 && |
2869 | !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) | ||
2869 | handle_stripe_expansion(conf, sh, NULL); | 2870 | handle_stripe_expansion(conf, sh, NULL); |
2870 | 2871 | ||
2871 | if (sh->ops.count) | 2872 | if (sh->ops.count) |
@@ -3067,7 +3068,8 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) | |||
3067 | md_done_sync(conf->mddev, STRIPE_SECTORS, 1); | 3068 | md_done_sync(conf->mddev, STRIPE_SECTORS, 1); |
3068 | } | 3069 | } |
3069 | 3070 | ||
3070 | if (s.expanding && s.locked == 0) | 3071 | if (s.expanding && s.locked == 0 && |
3072 | !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) | ||
3071 | handle_stripe_expansion(conf, sh, &r6s); | 3073 | handle_stripe_expansion(conf, sh, &r6s); |
3072 | 3074 | ||
3073 | spin_unlock(&sh->lock); | 3075 | spin_unlock(&sh->lock); |