]> 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>
Tue, 30 Nov 2010 22:55:35 +0000 (09:55 +1100)
Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c
tests/10ddf-create

index 1ff7e545ce83f432859112d9eb399cfbc8d5d958..b3890aae7d63849c20d9335c6df5ecd1a57474b2 100644 (file)
@@ -1961,6 +1961,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 12c38208cd37b6bd9f516742128ab7864126ecdd..d8dca58bf33ec70bc3ff114e8dac73eafac81553 100644 (file)
@@ -10,6 +10,9 @@
 
 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