]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - init/do_mounts_initrd.c
init: pass root_device_name explicitly
[thirdparty/linux.git] / init / do_mounts_initrd.c
index 686d1ff3af4bb1c43b017c520a5dec667ab66751..425f4bcf4b77e0a5d15b8b8bb40ea98fa91420a4 100644 (file)
@@ -83,7 +83,7 @@ static int __init init_linuxrc(struct subprocess_info *info, struct cred *new)
        return 0;
 }
 
-static void __init handle_initrd(void)
+static void __init handle_initrd(char *root_device_name)
 {
        struct subprocess_info *info;
        static char *argv[] = { "linuxrc", NULL, };
@@ -95,7 +95,8 @@ static void __init handle_initrd(void)
        real_root_dev = new_encode_dev(ROOT_DEV);
        create_dev("/dev/root.old", Root_RAM0);
        /* mount initrd on rootfs' /root */
-       mount_root_generic("/dev/root.old", root_mountflags & ~MS_RDONLY);
+       mount_root_generic("/dev/root.old", root_device_name,
+                          root_mountflags & ~MS_RDONLY);
        init_mkdir("/old", 0700);
        init_chdir("/old");
 
@@ -117,7 +118,7 @@ static void __init handle_initrd(void)
 
        init_chdir("/");
        ROOT_DEV = new_decode_dev(real_root_dev);
-       mount_root();
+       mount_root(root_device_name);
 
        printk(KERN_NOTICE "Trying to move old root to /initrd ... ");
        error = init_mount("/old", "/root/initrd", NULL, MS_MOVE, NULL);
@@ -133,7 +134,7 @@ static void __init handle_initrd(void)
        }
 }
 
-bool __init initrd_load(void)
+bool __init initrd_load(char *root_device_name)
 {
        if (mount_initrd) {
                create_dev("/dev/ram", Root_RAM0);
@@ -145,7 +146,7 @@ bool __init initrd_load(void)
                 */
                if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
                        init_unlink("/initrd.image");
-                       handle_initrd();
+                       handle_initrd(root_device_name);
                        return true;
                }
        }