]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
md/raid5: be careful not to resize_stripes too big.
authorNeilBrown <neilb@suse.de>
Tue, 25 Sep 2012 07:00:43 +0000 (17:00 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 25 Sep 2012 07:00:43 +0000 (17:00 +1000)
When a RAID5 is reshaping, conf->raid_disks is increased
before mddev->delta_disks becomes zero.
This can result in check_reshape calling resize_stripes with a
number that is too large.  This particularly happens
when md_check_recovery calls ->check_reshape().

If we use ->previous_raid_disks, we don't risk this.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c

index 3ef96ca9a06194f9831805a9dbabd9f1725665e5..7bf2fef5cb88058c89a3f340210503c07c291028 100644 (file)
@@ -6230,7 +6230,7 @@ static int check_reshape(struct mddev *mddev)
        if (!check_stripe_cache(mddev))
                return -ENOSPC;
 
-       return resize_stripes(conf, conf->raid_disks + mddev->delta_disks);
+       return resize_stripes(conf, conf->previous_raid_disks + mddev->delta_disks);
 }
 
 static int raid5_start_reshape(struct mddev *mddev)