Skip to content

Commit

Permalink
md/raid5: enhance raid5_size to work correctly with negative delta_disks
Browse files Browse the repository at this point in the history
This is the first of four patches which combine to allow md/raid5 to
reduce the number of devices in the array by restriping the data over
a subset of the devices.

If the number of disks in a raid4/5/6 is being reduced, then the
default size must be based on the new number, not the old number
of devices.
In general, it should be based on the smaller of new and old.

Signed-off-by: NeilBrown <neilb@suse.de>
  • Loading branch information
NeilBrown committed Mar 31, 2009
1 parent 34e04e8 commit 7ec0547
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/md/raid5.c
Original file line number Diff line number Diff line change
Expand Up @@ -4169,8 +4169,13 @@ raid5_size(mddev_t *mddev, sector_t sectors, int raid_disks)

if (!sectors)
sectors = mddev->dev_sectors;
if (!raid_disks)
raid_disks = conf->previous_raid_disks;
if (!raid_disks) {
/* size is defined by the smallest of previous and new size */
if (conf->raid_disks < conf->previous_raid_disks)
raid_disks = conf->raid_disks;
else
raid_disks = conf->previous_raid_disks;
}

sectors &= ~((sector_t)mddev->chunk_size/512 - 1);
return sectors * (raid_disks - conf->max_degraded);
Expand Down

0 comments on commit 7ec0547

Please sign in to comment.