]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Fix default size calculations that were recently broken.
authorNeilBrown <neilb@suse.de>
Sun, 12 Aug 2012 22:00:18 +0000 (08:00 +1000)
committerNeilBrown <neilb@suse.de>
Sun, 12 Aug 2012 22:00:18 +0000 (08:00 +1000)
commit d04f65f48c93e7e57cc3c1d70dd07d094dece717
    Change the values for "max size" from -1 to 1.

Messed up 's->size' - leaving it as '1' (MAX_SIZE) in some cases and
causing the array reshape to fail.

Signed-off-by: NeilBrown <neilb@suse.de>
Build.c
Grow.c

diff --git a/Build.c b/Build.c
index e3f7fb2a246d79dcc3da63b35831db93f4ffcafe..ea55e5b529209504b5b54c25c6649837b90e27d3 100644 (file)
--- a/Build.c
+++ b/Build.c
@@ -124,7 +124,9 @@ int Build(char *mddev, struct mddev_dev *devlist,
        if (vers >= 9000) {
                mdu_array_info_t array;
                array.level = s->level;
-               array.size = s->size == MAX_SIZE ? 0 : s->size;
+               if (s->size == MAX_SIZE)
+                       s->size = 0;
+               array.size = s->size;
                array.nr_disks = s->raiddisks;
                array.raid_disks = s->raiddisks;
                array.md_minor = 0;
diff --git a/Grow.c b/Grow.c
index d13b7f3bdc58d85d715f926090c104eeea5e6785..ea86f7bb142a5a5967d2f945f38fb9509b8b8c5e 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -1716,7 +1716,9 @@ int Grow_reshape(char *devname, int fd,
                                st->update_tail = &st->updates;
                }
 
-               array.size = s->size == MAX_SIZE ? 0 : s->size;
+               if (s->size == MAX_SIZE)
+                       s->size = 0;
+               array.size = s->size;
                if ((unsigned)array.size != s->size) {
                        /* got truncated to 32bit, write to
                         * component_size instead