diff options
| -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); |
