From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750943AbWEPBNk (ORCPT ); Mon, 15 May 2006 21:13:40 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750948AbWEPBNi (ORCPT ); Mon, 15 May 2006 21:13:38 -0400 Received: from mx2.suse.de ([195.135.220.15]:30366 "EHLO mx2.suse.de") by vger.kernel.org with ESMTP id S1750915AbWEPBN3 (ORCPT ); Mon, 15 May 2006 21:13:29 -0400 From: NeilBrown To: Andrew Morton Date: Tue, 16 May 2006 11:13:12 +1000 Message-Id: <1060516011312.2735@suse.de> X-face: [Gw_3E*Gng}4rRrKRYotwlE?.2|**#s9D Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org 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 ### Diffstat output ./drivers/md/raid10.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff ./drivers/md/raid10.c~current~ ./drivers/md/raid10.c --- ./drivers/md/raid10.c~current~ 2006-05-16 11:09:25.000000000 +1000 +++ ./drivers/md/raid10.c 2006-05-16 11:09:42.000000000 +1000 @@ -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;