summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-05-26 01:40:53 +0000
committerNeil Brown <neilb@suse.de>2006-05-26 01:40:53 +0000
commite7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d (patch)
treef4a8fbc18ab7fb30698f8179b938dcb527d41f81 /util.c
parentda6b5ca9bd6962ea70dfa750f3d85ac1657fb9cf (diff)
downloadmdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.tar.gz
mdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.tar.xz
mdadm-e7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d.zip
Choose better devnumbers and tidy up some issues with finding names.
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'util.c')
-rw-r--r--util.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/util.c b/util.c
index 3d4f6d5..d36feb5 100644
--- a/util.c
+++ b/util.c
@@ -414,6 +414,8 @@ char *map_dev(int major, int minor, int create)
{
struct devmap *p;
char *std = NULL, *nonstd=NULL;
+ int did_check = 0;
+ retry:
if (!devlist_ready) {
char *dev = "/dev";
struct stat stb;
@@ -422,6 +424,7 @@ char *map_dev(int major, int minor, int create)
dev = "/dev/.";
nftw(dev, add_dev, 10, FTW_PHYS);
devlist_ready=1;
+ did_check = 1;
}
for (p=devlist; p; p=p->next)
@@ -437,6 +440,10 @@ char *map_dev(int major, int minor, int create)
nonstd = p->name;
}
}
+ if (!std && !nonstd && !did_check) {
+ devlist_ready = 0;
+ goto retry;
+ }
if (create && !std && !nonstd) {
static char buf[30];
snprintf(buf, 1024, "%d:%d", major, minor);