diff options
author | NeilBrown <neilb@suse.de> | 2012-05-22 13:55:28 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-05-22 13:55:28 +1000 |
commit | 30b67645faadcdc32072f999796b99bd0a20f2d5 (patch) | |
tree | b6e1f0d30c584794ecec0455450d36be5fe4b9e0 /drivers/md/raid5.c | |
parent | bb63a7019df91933de6854a87ddc5488b49edb85 (diff) |
md/raid5: Allow reshape while a bitmap is present.
We always should have allowed this. A raid5 reshape doesn't change
the size of the bitmap, so not need to restrict it.
Also add a test to make sure we don't try to start a reshape on a
failed array.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r-- | drivers/md/raid5.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index eab6168bb7f4..8fba57e8f78b 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -5559,9 +5559,6 @@ static int check_reshape(struct mddev *mddev) mddev->new_layout == mddev->layout && mddev->new_chunk_sectors == mddev->chunk_sectors) return 0; /* nothing to do */ - if (mddev->bitmap) - /* Cannot grow a bitmap yet */ - return -EBUSY; if (has_failed(conf)) return -EINVAL; if (mddev->delta_disks < 0) { @@ -5596,6 +5593,9 @@ static int raid5_start_reshape(struct mddev *mddev) if (!check_stripe_cache(mddev)) return -ENOSPC; + if (has_failed(conf)) + return -EINVAL; + rdev_for_each(rdev, mddev) { if (!test_bit(In_sync, &rdev->flags) && !test_bit(Faulty, &rdev->flags)) |