summaryrefslogtreecommitdiffstats
path: root/mapfile.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-04 20:51:12 +1100
committerNeilBrown <neilb@suse.de>2008-11-04 20:51:12 +1100
commitf2e55eccfb92969c3e11bc5d4883315f2e866a14 (patch)
tree41d9383f638fa80ca94f8b79afe8bceb9adca1cd /mapfile.c
parentf05641cf7a250bda189f16d9c6b917683e5c9aad (diff)
downloadmdadm-f2e55eccfb92969c3e11bc5d4883315f2e866a14.tar.gz
mdadm-f2e55eccfb92969c3e11bc5d4883315f2e866a14.tar.xz
mdadm-f2e55eccfb92969c3e11bc5d4883315f2e866a14.zip
mdopen: use small sequence number for uniquifying array names.
Rather than appending the md minor number, we now append a small sequence number to make sure name in /dev/md/ that aren't LOCAL are unique. As the map file is locked while we do this, we are sure of no losing any races. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'mapfile.c')
-rw-r--r--mapfile.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/mapfile.c b/mapfile.c
index 1c2dc52..6169d52 100644
--- a/mapfile.c
+++ b/mapfile.c
@@ -245,3 +245,18 @@ struct map_ent *map_by_devnum(struct map_ent **map, int devnum)
return mp;
return NULL;
}
+
+struct map_ent *map_by_name(struct map_ent **map, char *name)
+{
+ struct map_ent *mp;
+ if (!*map)
+ map_read(map);
+
+ for (mp = *map ; mp ; mp = mp->next) {
+ if (strncmp(mp->path, "/dev/md/", 8) != 0)
+ continue;
+ if (strcmp(mp->path+8, name) == 0)
+ return mp;
+ }
+ return NULL;
+}