From: Dan Williams Date: Sun, 12 Apr 2009 07:58:28 +0000 (-0700) Subject: imsm: round down array size at Create X-Git-Tag: mdadm-3.0-rc1~28^2~4 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=commitdiff_plain;h=979d38be50e84b70e0809249a6b05864049fb97d imsm: round down array size at Create Store the 1MB rounded down size of the array at create time. Signed-off-by: Dan Williams --- diff --git a/super-intel.c b/super-intel.c index b41ab3b1..3415da47 100644 --- a/super-intel.c +++ b/super-intel.c @@ -53,6 +53,7 @@ #define MPB_SECTOR_CNT 418 #define IMSM_RESERVED_SECTORS 4096 +#define SECT_PER_MB_SHIFT 11 /* Disk configuration info. */ #define IMSM_MAX_DEVICES 255 @@ -2377,6 +2378,9 @@ static int init_super_imsm_volume(struct supertype *st, mdu_array_info_t *info, array_blocks = calc_array_size(info->level, info->raid_disks, info->layout, info->chunk_size, info->size*2); + /* round array size down to closest MB */ + array_blocks = (array_blocks >> SECT_PER_MB_SHIFT) << SECT_PER_MB_SHIFT; + dev->size_low = __cpu_to_le32((__u32) array_blocks); dev->size_high = __cpu_to_le32((__u32) (array_blocks >> 32)); dev->status = __cpu_to_le32(0);