aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2012-05-22 13:55:28 +1000
committerNeilBrown <neilb@suse.de>2012-05-22 13:55:28 +1000
commit30b67645faadcdc32072f999796b99bd0a20f2d5 (patch)
treeb6e1f0d30c584794ecec0455450d36be5fe4b9e0 /drivers/md/raid5.c
parentmd/raid10: resize bitmap when required during reshape. (diff)
downloadlinux-dev-30b67645faadcdc32072f999796b99bd0a20f2d5.tar.xz
linux-dev-30b67645faadcdc32072f999796b99bd0a20f2d5.zip
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.c6
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))