diff options
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch b/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch new file mode 100644 index 000000000..8cea56d3f --- /dev/null +++ b/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch @@ -0,0 +1,76 @@ +From: Peter Korsgaard <jacmet@sunsite.dk> + +Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS, +using ramfs instead. + +Saves ~15KB. + +Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> +Acked-by: Kay Sievers <kay.sievers@vrfy.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -18,9 +18,9 @@ config UEVENT_HELPER_PATH + + config DEVTMPFS + bool "Maintain a devtmpfs filesystem to mount at /dev" +- depends on HOTPLUG && SHMEM && TMPFS ++ depends on HOTPLUG + help +- This creates a tmpfs filesystem instance early at bootup. ++ This creates a tmpfs/ramfs filesystem instance early at bootup. + In this filesystem, the kernel driver core maintains device + nodes with their default names and permissions for all + registered devices with an assigned major/minor number. +@@ -33,6 +33,9 @@ config DEVTMPFS + functional /dev without any further help. It also allows simple + rescue systems, and reliably handles dynamic major/minor numbers. + ++ Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs ++ file system will be used instead. ++ + config DEVTMPFS_MOUNT + bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs" + depends on DEVTMPFS +--- a/drivers/base/devtmpfs.c ++++ b/drivers/base/devtmpfs.c +@@ -20,6 +20,7 @@ + #include <linux/namei.h> + #include <linux/fs.h> + #include <linux/shmem_fs.h> ++#include <linux/ramfs.h> + #include <linux/cred.h> + #include <linux/sched.h> + #include <linux/init_task.h> +@@ -45,7 +46,11 @@ __setup("devtmpfs.mount=", mount_param); + static int dev_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data, struct vfsmount *mnt) + { ++#ifdef CONFIG_TMPFS + return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt); ++#else ++ return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt); ++#endif + } + + static struct file_system_type dev_fs_type = { +--- a/fs/ramfs/inode.c ++++ b/fs/ramfs/inode.c +@@ -214,7 +214,7 @@ static int ramfs_parse_options(char *data, struct ramfs_mount_opts *opts) + return 0; + } + +-static int ramfs_fill_super(struct super_block * sb, void * data, int silent) ++int ramfs_fill_super(struct super_block *sb, void *data, int silent) + { + struct ramfs_fs_info *fsi; + struct inode *inode = NULL; +--- a/include/linux/ramfs.h ++++ b/include/linux/ramfs.h +@@ -20,4 +20,6 @@ extern const struct file_operations ramfs_file_operations; + extern const struct vm_operations_struct generic_file_vm_ops; + extern int __init init_rootfs(void); + ++int ramfs_fill_super(struct super_block *sb, void *data, int silent); ++ + #endif |