diff options
author | NeilBrown <neilb@suse.de> | 2013-05-21 12:34:24 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2013-05-21 12:34:24 +1000 |
commit | 93f174b986519ddf86e377199299d77af6850f1a (patch) | |
tree | 279fe22190fc53761e7c005355508e93268f0421 /Grow.c | |
parent | 033d0929ad5bf1fd635194ba2525b5d54e1a00b6 (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.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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; |