| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- From: Peter Korsgaard <[email protected]>
- Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS,
- using ramfs instead.
- Saves ~15KB.
- Signed-off-by: Peter Korsgaard <[email protected]>
- Acked-by: Kay Sievers <[email protected]>
- Signed-off-by: Greg Kroah-Hartman <[email protected]>
- --- 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 *dat
- 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 ramf
- 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
|