]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
Choose better devnumbers and tidy up some issues with finding names.
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index 3d4f6d55a53bb9d38dad06243311c3cac1c99506..d36feb539ef867f9af84784f813d516128446022 100644 (file)
--- 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);