From 612e59d838b5480c2780a59f021eea2b32f3eb19 Mon Sep 17 00:00:00 2001 From: "Czarnowska, Anna" Date: Mon, 14 Feb 2011 09:27:09 +1100 Subject: [PATCH] fix: imsm: size must be in K for rounding to chunk chunk is in K so size must be converted to K before it is rounded. Otherwise we may get wrong freesize returned resulting in creation failure. Signed-off-by: Anna Czarnowska Signed-off-by: NeilBrown --- super-intel.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/super-intel.c b/super-intel.c index 456eacc..295aa1d 100644 --- a/super-intel.c +++ b/super-intel.c @@ -4384,7 +4384,8 @@ static int reserve_space(struct supertype *st, int raiddisks, maxsize = merge_extents(super, extent_cnt); minsize = size; if (size == 0) - minsize = chunk; + /* chunk is in K */ + minsize = chunk * 2; if (cnt < raiddisks || (super->orom && used && used != raiddisks) || @@ -4397,8 +4398,8 @@ static int reserve_space(struct supertype *st, int raiddisks, if (size == 0) { size = maxsize; if (chunk) { - size /= chunk; - size *= chunk; + size /= 2 * chunk; + size *= 2 * chunk; } }