diff --git a/[refs] b/[refs] index 9e4719522557..392d8a0a60dd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 34e04e87fb8b2c62c9e8868f41c8179d0e15f51a +refs/heads/master: 7ec0547838976d088dfb9cb0adb073e6e8a15aa3 diff --git a/trunk/drivers/md/raid5.c b/trunk/drivers/md/raid5.c index 3930b3e9aa04..5694eb8941b6 100644 --- a/trunk/drivers/md/raid5.c +++ b/trunk/drivers/md/raid5.c @@ -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);