Re: [RFC] rootmpfs

From: Rob Landley
Date: Wed Apr 03 2013 - 08:32:28 EST


On 04/03/2013 07:30:08 AM, Rob Landley wrote:
Attached is my quick and dirty hack to make rootfs be tmpfs when CONFIG_TMPFS is
enabled.

For a somewhat quantum definition of "attached".

Robdiff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index c24f1e1..f875bf2 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -244,10 +244,17 @@ struct dentry *ramfs_mount(struct file_system_type *fs_type,
return mount_nodev(fs_type, flags, data, ramfs_fill_super);
}

-static struct dentry *rootfs_mount(struct file_system_type *fs_type,
+int shmem_init(void);
+int shmem_fill_super(struct super_block *sb, void *data, int silent);
+static __init struct dentry *rootfs_mount(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
+#ifdef CONFIG_TMPFS
+ if (shmem_init()) return NULL;
+ return mount_nodev(fs_type, flags, data, shmem_fill_super);
+#else
return mount_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super);
+#endif
}

static void ramfs_kill_sb(struct super_block *sb)
diff --git a/mm/shmem.c b/mm/shmem.c
index 1c44af7..d2cb93e 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2785,6 +2785,8 @@ int __init shmem_init(void)
{
int error;

+ if (shmem_inode_cachep) return 0;
+
error = bdi_init(&shmem_backing_dev_info);
if (error)
goto out4;