From 15805f4fd9938544c8497c6ca236f7ee0fe46c7e Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 31 Mar 2009 15:10:36 +1100 Subject: [PATCH] --- yaml --- r: 139937 b: refs/heads/master c: 7ec0547838976d088dfb9cb0adb073e6e8a15aa3 h: refs/heads/master i: 139935: 332886f75720cbd289a5ef261b926a9d217b67d1 v: v3 --- [refs] | 2 +- trunk/drivers/md/raid5.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) 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);