From: NeilBrown Date: Mon, 26 Jun 2006 07:27:50 +0000 (-0700) Subject: [PATCH] md: Calculate correct array size for raid10 in new offset mode X-Git-Tag: v2.6.18-rc1~628 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=8838832830d2c6c28ae2db93188ae90652eb7fc2;p=linux-2.6-omap-h63xx.git [PATCH] md: Calculate correct array size for raid10 in new offset mode The size calculation made assumtion which the new offset mode didn't follow. This gets the size right in all cases. Signed-off-by: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 4db34edfd87..7f636283a1b 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2060,7 +2060,13 @@ static int run(mddev_t *mddev) /* * Ok, everything is just fine now */ - size = conf->stride * conf->raid_disks; + if (conf->far_offset) { + size = mddev->size >> (conf->chunk_shift-1); + size *= conf->raid_disks; + size <<= conf->chunk_shift; + sector_div(size, conf->far_copies); + } else + size = conf->stride * conf->raid_disks; sector_div(size, conf->near_copies); mddev->array_size = size/2; mddev->resync_max_sectors = size;