Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > by-pkgid > 7f9e18511336b1bbbdf914d376d524ba > files > 21

mkinitrd-6.0.63-17.1mnb2.src.rpm

diff -p -up mkinitrd-6.0.62/nash/block.c.root-devnum mkinitrd-6.0.62/nash/block.c
--- mkinitrd-6.0.62/nash/block.c.root-devnum	2008-08-25 10:57:16.000000000 +0200
+++ mkinitrd-6.0.62/nash/block.c	2008-08-25 10:58:57.000000000 +0200
@@ -494,8 +494,10 @@ nashFindFsByName(nashContext *nc, const 
         bdev = blkid_get_dev(nc->cache, name, BLKID_DEV_NORMAL);
     }
 
+    /* do not return immediately, check device access
+       since blkid now returns cached devices that may not exist */
     if (bdev)
-        return strdup(blkid_dev_devname(bdev));
+        name = blkid_dev_devname(bdev);
 
     if (!access(name, F_OK))
         return strdup(name);
@@ -525,6 +527,13 @@ nashMkPathBySpec(nashContext *nc, const 
     char *existing = nashGetPathBySpec(nc, spec);
     struct stat sb;
 
+    if (!existing) {
+        char *p;
+        dev_t devNum = strtoul(spec, &p, 16);
+        if (!*p && devNum > 0)
+            return smartmknod(path, S_IFBLK | 0700, devNum);
+    }
+
     if (!existing || stat(existing, &sb) < 0 || !S_ISBLK(sb.st_mode))
         return -1;