diff -ruw linux-2.6.30.orig/fs/ramfs/inode.c linux-2.6.30/fs/ramfs/inode.c
--- linux-2.6.30.orig/fs/ramfs/inode.c 2009-02-12 17:51:15.000000000 +0000
+++ linux-2.6.30/fs/ramfs/inode.c 2009-02-13 11:30:30.000000000 +0000
-@@ -255,17 +255,18 @@
- return err;
- }
-
-+
- struct dentry *ramfs_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
- {
+@@ -244,12 +244,6 @@
return mount_nodev(fs_type, flags, data, ramfs_fill_super);
}
-{
- return mount_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super);
-}
-+static struct file_system_type ramfs_fs_type = {
-+ .name = "ramfs",
-+ .mount = ramfs_mount,
-+ .kill_sb = kill_litter_super,
-+};
-
+-
static void ramfs_kill_sb(struct super_block *sb)
{
-@@ -273,30 +274,19 @@
- kill_litter_super(sb);
- }
-
--static struct file_system_type ramfs_fs_type = {
-- .name = "ramfs",
-- .mount = ramfs_mount,
-- .kill_sb = ramfs_kill_sb,
--};
+ kfree(sb->s_fs_info);
+@@ -261,18 +255,20 @@
+ .mount = ramfs_mount,
+ .kill_sb = ramfs_kill_sb,
+ };
++
+#ifndef CONFIG_TMPFS_ROOT
+static struct dentry *rootfs_mount(struct file_system_type *fs_type,
+ int flags, const char *dev_name, void *data)
-{
- return register_filesystem(&ramfs_fs_type);
-}
--
--static void __exit exit_ramfs_fs(void)
--{
-- unregister_filesystem(&ramfs_fs_type);
--}
--
-module_init(init_ramfs_fs)
--module_exit(exit_ramfs_fs)
-
int __init init_rootfs(void)
{
int err;
-@@ -311,5 +301,19 @@
+@@ -287,3 +283,12 @@
return err;
}
+{
+ return register_filesystem(&ramfs_fs_type);
+}
++module_init(init_ramfs_fs)
+
-+static void __exit exit_ramfs_fs(void)
-+{
-+ unregister_filesystem(&ramfs_fs_type);
-+}
+
-+module_init(init_ramfs_fs)
-+module_exit(exit_ramfs_fs)
-
- MODULE_LICENSE("GPL");
diff -ruw linux-2.6.30.orig/mm/shmem.c linux-2.6.30/mm/shmem.c
--- linux-2.6.30.orig/mm/shmem.c 2009-02-12 17:51:15.000000000 +0000
+++ linux-2.6.30/mm/shmem.c 2009-02-13 11:42:02.000000000 +0000
static unsigned long shmem_default_max_inodes(void)
@@ -2369,6 +2369,10 @@
- static int init_inodecache(void)
+ static int shmem_init_inodecache(void)
{
+#ifdef CONFIG_TMPFS_ROOT
+ if (shmem_inode_cachep)
EXPORT_SYMBOL_GPL(shmem_file_setup);
+#ifdef CONFIG_TMPFS_ROOT
-+static int rootfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
-+{
-+ return get_sb_nodev(fs_type, flags, data, shmem_fill_super, mnt);
-+}
++
++
++
++
++
+
+static struct file_system_type rootfs_fs_type = {
+ .name = "rootfs",
-+ .get_sb = rootfs_get_sb,
++ .mount = shmem_mount,
+ .kill_sb = kill_litter_super,
+};
+
+int __init init_rootfs(void)
+{
-+ if (init_inodecache())
++ if (shmem_init_inodecache())
+ panic("Can't initialize shm inode cache");
+ return register_filesystem(&rootfs_fs_type);
+}