summaryrefslogtreecommitdiff
path: root/Grow.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-05-21 12:34:24 +1000
committerNeilBrown <neilb@suse.de>2013-05-21 12:34:24 +1000
commit93f174b986519ddf86e377199299d77af6850f1a (patch)
tree279fe22190fc53761e7c005355508e93268f0421 /Grow.c
parent033d0929ad5bf1fd635194ba2525b5d54e1a00b6 (diff)
Grow: set_new_data_offset should report if kernel is too old.
For RAID5, not being able to set new_data_offset because of old kernel is not a problem. So make this fatal on for RAID10. Also remove an unused assignment to 'rv'. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r--Grow.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/Grow.c b/Grow.c
index 3e03c7aa..ee0fc5e0 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2173,7 +2173,6 @@ static int set_new_data_offset(struct mdinfo *sra, struct supertype *st,
fprintf(stderr,
Name ": %s: cannot open component %s\n",
devname, dn ? dn : "-unknown-");
- rv = -1;
goto release;
}
st2 = dup_super(st);
@@ -2293,6 +2292,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.
+ * For RAID5/6 this is not fatal
+ */
+ return 1;
fprintf(stderr, Name ": Cannot set new_offset for %s\n",
dn);
break;
@@ -2358,6 +2362,11 @@ static int raid10_reshape(char *container, int fd, char *devname,
}
err = set_new_data_offset(sra, st, devname, info->delta_disks, data_offset,
min);
+ if (err == 1) {
+ pr_err("Cannot set new_data_offset: RAID10 reshape not\n");
+ cont_err("supported on this kernel\n");
+ err = -1;
+ }
if (err < 0)
goto release;