diff --git a/init/do_mounts.c b/init/do_mounts.c index b5f9604d0c98a22307397836f224945c6e762778..3f5567127e345a50b6eb58507dc1c431d2f67ff3 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -32,6 +32,7 @@ int root_mountflags = MS_RDONLY | MS_SILENT; static char * __initdata root_device_name; static char __initdata saved_root_name[64]; static int root_wait; +static int initramtmpfs; dev_t ROOT_DEV; @@ -355,9 +356,16 @@ static int __init root_delay_setup(char *str) return 1; } +static int __init initramtmpfs_setup(char *str) +{ + initramtmpfs = 1; + return 1; +} + __setup("rootflags=", root_data_setup); __setup("rootfstype=", fs_names_setup); __setup("rootdelay=", root_delay_setup); +__setup("initramtmpfs", initramtmpfs_setup); static void __init get_fs_names(char *page) { @@ -649,7 +657,8 @@ struct file_system_type rootfs_fs_type = { void __init init_rootfs(void) { - if (IS_ENABLED(CONFIG_TMPFS) && !saved_root_name[0] && + if (IS_ENABLED(CONFIG_TMPFS) && + (!saved_root_name[0] || initramtmpfs) && (!root_fs_names || strstr(root_fs_names, "tmpfs"))) is_tmpfs = true; }