]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Grow: ignore error from final wait_backup
authorNeilBrown <neilb@suse.de>
Mon, 12 Oct 2009 05:55:19 +0000 (16:55 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 12 Oct 2009 05:55:19 +0000 (16:55 +1100)
The last time wait_backup is called, it might see reshape
finish and so return an error indicator.
But this is not an error, and we must go ahead and prepare
the array for full access.

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

diff --git a/Grow.c b/Grow.c
index e3239d64585df22a1f621e365839a4911974a4e5..c0fa56609d76e5484d50b23dc31762b0fe6371ca 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -1417,10 +1417,9 @@ static int child_grow(int afd, struct mdinfo *sra, unsigned long stripes,
                    dests, destfd, destoffsets,
                    0, buf);
        validate(afd, destfd[0], destoffsets[0]);
-       if (wait_backup(sra, 0, stripes * chunk / 512, stripes * chunk / 512,
-                       dests, destfd, destoffsets,
-                       0) < 0)
-               return 0;
+       wait_backup(sra, 0, stripes * chunk / 512, stripes * chunk / 512,
+                   dests, destfd, destoffsets,
+                   0);
        sysfs_set_num(sra, NULL, "suspend_lo", (stripes * chunk/512) * data);
        free(buf);
        /* FIXME this should probably be numeric */
@@ -1453,10 +1452,8 @@ static int child_shrink(int afd, struct mdinfo *sra, unsigned long stripes,
                    dests, destfd, destoffsets,
                    0, buf);
        validate(afd, destfd[0], destoffsets[0]);
-       rv = wait_backup(sra, start, stripes*chunk/512, 0,
-                        dests, destfd, destoffsets, 0);
-       if (rv < 0)
-               return 0;
+       wait_backup(sra, start, stripes*chunk/512, 0,
+                   dests, destfd, destoffsets, 0);
        sysfs_set_num(sra, NULL, "suspend_lo", (stripes * chunk/512) * data);
        free(buf);
        /* FIXME this should probably be numeric */
@@ -1523,10 +1520,9 @@ static int child_same_size(int afd, struct mdinfo *sra, unsigned long stripes,
                        part) < 0)
                return 0;
        sysfs_set_num(sra, NULL, "suspend_lo", ((start-stripes)*chunk/512) * data);
-       if (wait_backup(sra, (start-stripes) * chunk/512, tailstripes * chunk/512, 0,
-                       dests, destfd, destoffsets,
-                       1-part) < 0)
-               return 0;
+       wait_backup(sra, (start-stripes) * chunk/512, tailstripes * chunk/512, 0,
+                   dests, destfd, destoffsets,
+                   1-part);
        sysfs_set_num(sra, NULL, "suspend_lo", (size*chunk/512) * data);
        sysfs_set_num(sra, NULL, "sync_speed_min", speed);
        free(buf);