]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Grow: handle E2BIG from new_offset changes more gracefully.
authorNeilBrown <neilb@suse.de>
Tue, 21 May 2013 06:35:29 +0000 (16:35 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 22 May 2013 02:26:35 +0000 (12:26 +1000)
If new_offset change is too big, just do the reshape the old way.

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

diff --git a/Grow.c b/Grow.c
index 327764919d0f8e1fa5decf80d33fc5e7ddb2239c..5d35e3203d65edde4c658c234e3aa9975ddaeddf 100644 (file)
--- a/Grow.c
+++ b/Grow.c
@@ -2288,8 +2288,11 @@ static int set_new_data_offset(struct mdinfo *sra, struct supertype *st,
                if (sysfs_set_num(sra, sd, "new_offset",
                                  info2.new_data_offset) < 0) {
                        err = errno;
-                       if (sd == sra->devs && err == ENOENT)
-                               /* Early kernel, no 'new_offset' file.
+                       err = -1;
+                       if (sd == sra->devs &&
+                           (errno == ENOENT || errno == E2BIG))
+                               /* Early kernel, no 'new_offset' file,
+                                * or kernel doesn't like us.
                                 * For RAID5/6 this is not fatal
                                 */
                                return 1;