git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
init
/
do_mounts.c
diff --git
a/init/do_mounts.c
b/init/do_mounts.c
index
b7570c0
..
94aeec7
100644
(file)
--- a/
init/do_mounts.c
+++ b/
init/do_mounts.c
@@
-7,6
+7,7
@@
#include <linux/root_dev.h>
#include <linux/security.h>
#include <linux/delay.h>
#include <linux/root_dev.h>
#include <linux/security.h>
#include <linux/delay.h>
+#include <linux/mount.h>
#include <linux/nfs_fs.h>
#include <linux/nfs_fs_sb.h>
#include <linux/nfs_fs.h>
#include <linux/nfs_fs_sb.h>
@@
-18,15
+19,12
@@
extern int get_filesystem_list(char * buf);
int __initdata rd_doload; /* 1 = load RAM disk, 0 = don't load */
int __initdata rd_doload; /* 1 = load RAM disk, 0 = don't load */
-int root_mountflags = MS_RDONLY | MS_
VERBOSE
;
+int root_mountflags = MS_RDONLY | MS_
SILENT
;
char * __initdata root_device_name;
static char __initdata saved_root_name[64];
char * __initdata root_device_name;
static char __initdata saved_root_name[64];
-/* this is initialized in init/main.c */
dev_t ROOT_DEV;
dev_t ROOT_DEV;
-EXPORT_SYMBOL(ROOT_DEV);
-
static int __init load_ramdisk(char *str)
{
rd_doload = simple_strtol(str,NULL,0) & 3;
static int __init load_ramdisk(char *str)
{
rd_doload = simple_strtol(str,NULL,0) & 3;
@@
-128,10
+126,10
@@
fail:
* used when disk name of partitioned disk ends on a digit.
*
* If name doesn't have fall into the categories above, we return 0.
* used when disk name of partitioned disk ends on a digit.
*
* If name doesn't have fall into the categories above, we return 0.
- *
Driver
fs is used to check if something is a disk name - it has
+ *
Sys
fs is used to check if something is a disk name - it has
* all known disks under bus/block/devices. If the disk name
* all known disks under bus/block/devices. If the disk name
- * contains slashes, name of
driver
fs node has them replaced with
- * bangs. try_name() does the actual checks, assuming that
driver
fs
+ * contains slashes, name of
sys
fs node has them replaced with
+ * bangs. try_name() does the actual checks, assuming that
sys
fs
* is mounted on rootfs /sys.
*/
* is mounted on rootfs /sys.
*/
@@
-312,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);
@@
-322,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;
@@
-383,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);
}
@@
-394,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);
@@
-406,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;
@@
-421,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 ();
}
}