]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Manage: minor fix to add/re-add handling.
authorNeilBrown <neilb@suse.de>
Tue, 10 May 2011 06:20:25 +0000 (16:20 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 10 May 2011 06:20:25 +0000 (16:20 +1000)
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>
Manage.c

index b7aceaa52be187179ec7cff4ba0d7d9b78482e94..0e54bc77e33f5512e7499b43fc01bddc3a21bcb4 100644 (file)
--- 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