summaryrefslogtreecommitdiffstats
path: root/Incremental.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-04 20:50:38 +1100
committerNeilBrown <neilb@suse.de>2008-11-04 20:50:38 +1100
commitfe056d1fb0b1d08c614f574cceaa640abc382544 (patch)
tree2ee2ebca04e23a7dc912fdef7c4f7bd95066a17c /Incremental.c
parent215bb3f77627d818d5bc3eaca190212d491e1fcf (diff)
downloadmdadm-fe056d1fb0b1d08c614f574cceaa640abc382544.tar.gz
mdadm-fe056d1fb0b1d08c614f574cceaa640abc382544.tar.xz
mdadm-fe056d1fb0b1d08c614f574cceaa640abc382544.zip
config: Don't require an array to have a device name.
i.e. in mdadm.conf you can have a line like ARRAY uuid=whatever and it will use auto-name-generation to give a name to the array at assemble-time. The is different from blind auto-assembly in that the array will be treated as 'local'.
Diffstat (limited to 'Incremental.c')
-rw-r--r--Incremental.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/Incremental.c b/Incremental.c
index 30bca4a..55a5f10 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -154,7 +154,7 @@ int Incremental(char *devname, int verbose, int runstop,
if (array_list->uuid_set &&
same_uuid(array_list->uuid, info.uuid, st->ss->swapuuid)
== 0) {
- if (verbose >= 2)
+ if (verbose >= 2 && array_list->devname)
fprintf(stderr, Name
": UUID differs from %s.\n",
array_list->devname);
@@ -162,7 +162,7 @@ int Incremental(char *devname, int verbose, int runstop,
}
if (array_list->name[0] &&
strcasecmp(array_list->name, info.name) != 0) {
- if (verbose >= 2)
+ if (verbose >= 2 && array_list->devname)
fprintf(stderr, Name
": Name differs from %s.\n",
array_list->devname);
@@ -170,7 +170,7 @@ int Incremental(char *devname, int verbose, int runstop,
}
if (array_list->devices &&
!match_oneof(array_list->devices, devname)) {
- if (verbose >= 2)
+ if (verbose >= 2 && array_list->devname)
fprintf(stderr, Name
": Not a listed device for %s.\n",
array_list->devname);
@@ -178,7 +178,7 @@ int Incremental(char *devname, int verbose, int runstop,
}
if (array_list->super_minor != UnSet &&
array_list->super_minor != info.array.md_minor) {
- if (verbose >= 2)
+ if (verbose >= 2 && array_list->devname)
fprintf(stderr, Name
": Different super-minor to %s.\n",
array_list->devname);
@@ -188,7 +188,7 @@ int Incremental(char *devname, int verbose, int runstop,
!array_list->name[0] &&
!array_list->devices &&
array_list->super_minor == UnSet) {
- if (verbose >= 2)
+ if (verbose >= 2 && array_list->devname)
fprintf(stderr, Name
": %s doesn't have any identifying information.\n",
array_list->devname);
@@ -197,10 +197,15 @@ int Incremental(char *devname, int verbose, int runstop,
/* FIXME, should I check raid_disks and level too?? */
if (match) {
- if (verbose >= 0)
- fprintf(stderr, Name
+ if (verbose >= 0) {
+ if (match->devname && array_list->devname)
+ fprintf(stderr, Name
": we match both %s and %s - cannot decide which to use.\n",
- match->devname, array_list->devname);
+ match->devname, array_list->devname);
+ else
+ fprintf(stderr, Name
+ ": multiple lines in mdadm.conf match\n");
+ }
return 2;
}
match = array_list;
@@ -656,7 +661,8 @@ int IncrementalScan(int verbose)
}
/* Ok, we can try this one. Maybe it needs a bitmap */
for (mddev = devs ; mddev ; mddev = mddev->next)
- if (strcmp(mddev->devname, me->path) == 0)
+ if (mddev->devname
+ && strcmp(mddev->devname, me->path) == 0)
break;
if (mddev && mddev->bitmap_file) {
/*