|
@@ -2865,7 +2865,8 @@ static void handle_stripe5(struct stripe_head *sh)
|
|
|
md_done_sync(conf->mddev, STRIPE_SECTORS, 1);
|
|
|
}
|
|
|
|
|
|
- if (s.expanding && s.locked == 0)
|
|
|
+ if (s.expanding && s.locked == 0 &&
|
|
|
+ !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending))
|
|
|
handle_stripe_expansion(conf, sh, NULL);
|
|
|
|
|
|
if (sh->ops.count)
|
|
@@ -3067,7 +3068,8 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page)
|
|
|
md_done_sync(conf->mddev, STRIPE_SECTORS, 1);
|
|
|
}
|
|
|
|
|
|
- if (s.expanding && s.locked == 0)
|
|
|
+ if (s.expanding && s.locked == 0 &&
|
|
|
+ !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending))
|
|
|
handle_stripe_expansion(conf, sh, &r6s);
|
|
|
|
|
|
spin_unlock(&sh->lock);
|