summaryrefslogtreecommitdiffstats
path: root/Manage.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-05-10 16:20:25 +1000
committerNeilBrown <neilb@suse.de>2011-05-10 16:20:25 +1000
commit873eec468c0b1b32332b5e4dd6b31e878e0e60e0 (patch)
tree85b345f15eacb36df8c8dae782408ee423ffd2f3 /Manage.c
parent0f23aa88f81127eae744d60eedd4884f021562d0 (diff)
downloadmdadm-873eec468c0b1b32332b5e4dd6b31e878e0e60e0.tar.gz
Manage: minor fix to add/re-add handling.
If using an old kernel we should still check if a re-add might be intended, so we can refuse and require a '--zero' first if it is not possible. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Manage.c')
-rw-r--r--Manage.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/Manage.c b/Manage.c
index b7aceaa5..0e54bc77 100644
--- a/Manage.c
+++ b/Manage.c
@@ -704,13 +704,7 @@ int Manage_subdevs(char *devname, int fd,
*/
tst->ss->uuid_from_super(tst, duuid);
- /* re-add doesn't work for version-1 superblocks
- * before 2.6.18 :-(
- */
- if (array.major_version == 1 &&
- get_linux_version() <= 2006018)
- ;
- else if (st->sb) {
+ if (st->sb) {
struct mdinfo mdi;
st->ss->getinfo_super(st, &mdi, NULL);
st->ss->uuid_from_super(st, ouuid);
@@ -720,6 +714,12 @@ int Manage_subdevs(char *devname, int fd,
/* look like it is worth a try. Need to
* make sure kernel will accept it though.
*/
+ /* re-add doesn't work for version-1 superblocks
+ * before 2.6.18 :-(
+ */
+ if (array.major_version == 1 &&
+ get_linux_version() <= 2006018)
+ goto skip_re_add;
disc.number = mdi.disk.number;
if (ioctl(fd, GET_DISK_INFO, &disc) != 0
|| disc.major != 0 || disc.minor != 0