[ALSA] sparc dbri removal of DBRI_NO_INTS
[linux-2.6.git] / init / do_mounts.c
index adb7cad3e6eec17165efdf88acf1f0f936fc4c9d..94aeec7aa917fbf727e5be22c55f842621b31ef3 100644 (file)
@@ -310,6 +310,11 @@ retry:
 
                panic("VFS: Unable to mount root fs on %s", b);
        }
 
                panic("VFS: Unable to mount root fs on %s", b);
        }
+
+       printk("No filesystem could mount root, tried: ");
+       for (p = fs_names; *p; p += strlen(p)+1)
+               printk(" %s", p);
+       printk("\n");
        panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));
 out:
        putname(fs_names);
        panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));
 out:
        putname(fs_names);
@@ -320,7 +325,7 @@ static int __init mount_nfs_root(void)
 {
        void *data = nfs_root_data();
 
 {
        void *data = nfs_root_data();
 
-       create_dev("/dev/root", ROOT_DEV, NULL);
+       create_dev("/dev/root", ROOT_DEV);
        if (data &&
            do_mount_root("/dev/root", "nfs", root_mountflags, data) == 0)
                return 1;
        if (data &&
            do_mount_root("/dev/root", "nfs", root_mountflags, data) == 0)
                return 1;
@@ -381,7 +386,7 @@ void __init mount_root(void)
                        change_floppy("root floppy");
        }
 #endif
                        change_floppy("root floppy");
        }
 #endif
-       create_dev("/dev/root", ROOT_DEV, root_device_name);
+       create_dev("/dev/root", ROOT_DEV);
        mount_block_root("/dev/root", root_mountflags);
 }
 
        mount_block_root("/dev/root", root_mountflags);
 }
 
@@ -392,8 +397,6 @@ void __init prepare_namespace(void)
 {
        int is_floppy;
 
 {
        int is_floppy;
 
-       mount_devfs();
-
        if (root_delay) {
                printk(KERN_INFO "Waiting %dsec before mounting root device...\n",
                       root_delay);
        if (root_delay) {
                printk(KERN_INFO "Waiting %dsec before mounting root device...\n",
                       root_delay);
@@ -404,6 +407,10 @@ void __init prepare_namespace(void)
 
        if (saved_root_name[0]) {
                root_device_name = saved_root_name;
 
        if (saved_root_name[0]) {
                root_device_name = saved_root_name;
+               if (!strncmp(root_device_name, "mtd", 3)) {
+                       mount_block_root(root_device_name, root_mountflags);
+                       goto out;
+               }
                ROOT_DEV = name_to_dev_t(root_device_name);
                if (strncmp(root_device_name, "/dev/", 5) == 0)
                        root_device_name += 5;
                ROOT_DEV = name_to_dev_t(root_device_name);
                if (strncmp(root_device_name, "/dev/", 5) == 0)
                        root_device_name += 5;
@@ -419,10 +426,8 @@ void __init prepare_namespace(void)
 
        mount_root();
 out:
 
        mount_root();
 out:
-       umount_devfs("/dev");
        sys_mount(".", "/", NULL, MS_MOVE, NULL);
        sys_chroot(".");
        security_sb_post_mountroot();
        sys_mount(".", "/", NULL, MS_MOVE, NULL);
        sys_chroot(".");
        security_sb_post_mountroot();
-       mount_devfs_fs ();
 }
 
 }