aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/md/raid5.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 3930b3e9aa04..5694eb8941b6 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -4169,8 +4169,13 @@ raid5_size(mddev_t *mddev, sector_t sectors, int raid_disks)
4169 4169
4170 if (!sectors) 4170 if (!sectors)
4171 sectors = mddev->dev_sectors; 4171 sectors = mddev->dev_sectors;
4172 if (!raid_disks) 4172 if (!raid_disks) {
4173 raid_disks = conf->previous_raid_disks; 4173 /* size is defined by the smallest of previous and new size */
4174 if (conf->raid_disks < conf->previous_raid_disks)
4175 raid_disks = conf->raid_disks;
4176 else
4177 raid_disks = conf->previous_raid_disks;
4178 }
4174 4179
4175 sectors &= ~((sector_t)mddev->chunk_size/512 - 1); 4180 sectors &= ~((sector_t)mddev->chunk_size/512 - 1);
4176 return sectors * (raid_disks - conf->max_degraded); 4181 return sectors * (raid_disks - conf->max_degraded);