]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
fix: imsm: size must be in K for rounding to chunk
authorCzarnowska, Anna <anna.czarnowska@intel.com>
Sun, 13 Feb 2011 22:27:09 +0000 (09:27 +1100)
committerNeilBrown <neilb@suse.de>
Sun, 13 Feb 2011 22:27:09 +0000 (09:27 +1100)
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 <anna.czarnowska@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
super-intel.c

index 456eacc6846e819df3f6816e171ad10ebed4a441..295aa1d04a2b747c64a52c24f88662fe99aaf8cb 100644 (file)
@@ -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;
                }
        }