diff options
| -rw-r--r-- | drivers/base/Kconfig | 7 | ||||
| -rw-r--r-- | drivers/base/devtmpfs.c | 5 | ||||
| -rw-r--r-- | fs/ramfs/inode.c | 2 | ||||
| -rw-r--r-- | include/linux/ramfs.h | 2 | 
4 files changed, 13 insertions, 3 deletions
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index fd52c48ee76..ef38aff737e 100644 --- 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 diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index 057cf11326b..af0600143d1 100644 --- 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 = { diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c index c94853473ca..f47cd212dee 100644 --- 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; diff --git a/include/linux/ramfs.h b/include/linux/ramfs.h index 4e768dda87b..8600508c77a 100644 --- 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  |