]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
ddf: fail creation of new subarray with same name as old.
authorNeilBrown <neilb@suse.de>
Tue, 30 Nov 2010 22:55:35 +0000 (09:55 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 10 Mar 2011 06:20:25 +0000 (17:20 +1100)
Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c
tests/10ddf-create

index 141731a3069654e2aa29e2c02c8fcc74071c8d1e..d06c80588cd5d6c99c409303887dc0ab469a4ce0 100644 (file)
@@ -1960,6 +1960,19 @@ static int init_super_ddf_bvd(struct supertype *st,
                return 0;
        }
 
+       if (name)
+               for (venum = 0; venum < __be16_to_cpu(ddf->virt->max_vdes); venum++)
+                       if (!all_ff(ddf->virt->entries[venum].guid)) {
+                               char *n = ddf->virt->entries[venum].name;
+
+                               if (strncmp(name, n, 16) == 0) {
+                                       fprintf(stderr, Name ": This ddf already"
+                                               " has an array called %s\n",
+                                               name);
+                                       return 0;
+                               }
+                       }
+
        for (venum = 0; venum < __be16_to_cpu(ddf->virt->max_vdes); venum++)
                if (all_ff(ddf->virt->entries[venum].guid))
                        break;
index 58ca2646e2b31c06230c1235d9e87ce016251dfa..25b1352944244138d6516e1cece4f6e1215fcb27 100644 (file)
@@ -11,6 +11,9 @@ set -e
 
 mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12
 mdadm -CR r0 -l0 -n5 /dev/md/ddf0 -z 5000
+if mdadm -CR r0 -l1 -n2 /dev/md/ddf0 -z 5000
+then echo >&2 create with same name should fail ; exit 1
+fi
 mdadm -CR r1 -l1 -n2 /dev/md/ddf0
 mdadm -CR r5 -l5 -n3 /dev/md/ddf0
 testdev /dev/md/r0 5 5000 512