diff options
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r-- | drivers/md/raid10.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index fb9062b5022c..8fe3aa469987 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -3678,9 +3678,15 @@ static int raid10_resize(struct mddev *mddev, sector_t sectors) | |||
3678 | 3678 | ||
3679 | oldsize = raid10_size(mddev, 0, 0); | 3679 | oldsize = raid10_size(mddev, 0, 0); |
3680 | size = raid10_size(mddev, sectors, 0); | 3680 | size = raid10_size(mddev, sectors, 0); |
3681 | md_set_array_sectors(mddev, size); | 3681 | if (mddev->external_size && |
3682 | if (mddev->array_sectors > size) | 3682 | mddev->array_sectors > size) |
3683 | return -EINVAL; | 3683 | return -EINVAL; |
3684 | if (mddev->bitmap) { | ||
3685 | int ret = bitmap_resize(mddev->bitmap, size, 0, 0); | ||
3686 | if (ret) | ||
3687 | return ret; | ||
3688 | } | ||
3689 | md_set_array_sectors(mddev, size); | ||
3684 | set_capacity(mddev->gendisk, mddev->array_sectors); | 3690 | set_capacity(mddev->gendisk, mddev->array_sectors); |
3685 | revalidate_disk(mddev->gendisk); | 3691 | revalidate_disk(mddev->gendisk); |
3686 | if (sectors > mddev->dev_sectors && | 3692 | if (sectors > mddev->dev_sectors && |