Commit da5e4ef7fdb8f2fb0878dee3bd9d4dd10cea8cf1
Committed by
Greg Kroah-Hartman
1 parent
1653268b1b
Exists in
master
and in
7 other branches
devtmpfs: support !CONFIG_TMPFS
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>
Showing 4 changed files with 13 additions and 3 deletions Side-by-side Diff
drivers/base/Kconfig
... | ... | @@ -18,9 +18,9 @@ |
18 | 18 | |
19 | 19 | config DEVTMPFS |
20 | 20 | bool "Maintain a devtmpfs filesystem to mount at /dev" |
21 | - depends on HOTPLUG && SHMEM && TMPFS | |
21 | + depends on HOTPLUG | |
22 | 22 | help |
23 | - This creates a tmpfs filesystem instance early at bootup. | |
23 | + This creates a tmpfs/ramfs filesystem instance early at bootup. | |
24 | 24 | In this filesystem, the kernel driver core maintains device |
25 | 25 | nodes with their default names and permissions for all |
26 | 26 | registered devices with an assigned major/minor number. |
... | ... | @@ -32,6 +32,9 @@ |
32 | 32 | In very limited environments, it may provide a sufficient |
33 | 33 | functional /dev without any further help. It also allows simple |
34 | 34 | rescue systems, and reliably handles dynamic major/minor numbers. |
35 | + | |
36 | + Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs | |
37 | + file system will be used instead. | |
35 | 38 | |
36 | 39 | config DEVTMPFS_MOUNT |
37 | 40 | bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs" |
drivers/base/devtmpfs.c
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | #include <linux/namei.h> |
21 | 21 | #include <linux/fs.h> |
22 | 22 | #include <linux/shmem_fs.h> |
23 | +#include <linux/ramfs.h> | |
23 | 24 | #include <linux/cred.h> |
24 | 25 | #include <linux/sched.h> |
25 | 26 | #include <linux/init_task.h> |
26 | 27 | |
... | ... | @@ -45,7 +46,11 @@ |
45 | 46 | static int dev_get_sb(struct file_system_type *fs_type, int flags, |
46 | 47 | const char *dev_name, void *data, struct vfsmount *mnt) |
47 | 48 | { |
49 | +#ifdef CONFIG_TMPFS | |
48 | 50 | return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt); |
51 | +#else | |
52 | + return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt); | |
53 | +#endif | |
49 | 54 | } |
50 | 55 | |
51 | 56 | static struct file_system_type dev_fs_type = { |
fs/ramfs/inode.c
... | ... | @@ -214,7 +214,7 @@ |
214 | 214 | return 0; |
215 | 215 | } |
216 | 216 | |
217 | -static int ramfs_fill_super(struct super_block * sb, void * data, int silent) | |
217 | +int ramfs_fill_super(struct super_block *sb, void *data, int silent) | |
218 | 218 | { |
219 | 219 | struct ramfs_fs_info *fsi; |
220 | 220 | struct inode *inode = NULL; |