linux-embedded.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] devtmpfs: support !CONFIG_TMPFS
@ 2010-03-12 10:25 Peter Korsgaard
  2010-03-12 11:28 ` Michael Tokarev
  2010-03-16 19:00 ` Greg KH
  0 siblings, 2 replies; 10+ messages in thread
From: Peter Korsgaard @ 2010-03-12 10:25 UTC (permalink / raw)
  To: kay.sievers, gregkh, linux-kernel, linux-embedded; +Cc: Peter Korsgaard

Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS,
using ramfs instead.

Saves ~15KB.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 drivers/base/Kconfig    |    2 +-
 drivers/base/devtmpfs.c |    5 +++++
 fs/ramfs/inode.c        |    2 +-
 include/linux/ramfs.h   |    2 ++
 4 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index fd52c48..7e33b16 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -18,7 +18,7 @@ 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.
 	  In this filesystem, the kernel driver core maintains device
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index dac478c..6927262 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>
@@ -44,7 +45,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 a6090aa..1a5259a 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -213,7 +213,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 4e768dd..8600508 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
-- 
1.7.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-12 10:25 [PATCH] devtmpfs: support !CONFIG_TMPFS Peter Korsgaard
@ 2010-03-12 11:28 ` Michael Tokarev
  2010-03-12 11:38   ` Peter Korsgaard
  2010-03-16 19:00 ` Greg KH
  1 sibling, 1 reply; 10+ messages in thread
From: Michael Tokarev @ 2010-03-12 11:28 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: kay.sievers, gregkh, linux-kernel, linux-embedded

Peter Korsgaard wrote:
> Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS,
> using ramfs instead.
> 
> Saves ~15KB.
> 
> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
[]> --- a/drivers/base/devtmpfs.c
> +++ b/drivers/base/devtmpfs.c
> @@ -44,7 +45,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
>  }

May be completely not to the point or even wrong, but I were
starring at this change for quite some time trying to understand
what's the difference.  Can we do it like this:

#ifdef CONFIG_TMPFS
# define devtmpfs_fill_super shmem_fill_super
#else
# define devtmpfs_fill_super ramfs_fill_super
#endif
  	return get_sb_single(fs_type, flags, data, devtmpfs_fill_super, mnt);

?

Or maybe it's just me... ;)

/mjt

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-12 11:28 ` Michael Tokarev
@ 2010-03-12 11:38   ` Peter Korsgaard
  2010-03-12 13:02     ` Kay Sievers
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Korsgaard @ 2010-03-12 11:38 UTC (permalink / raw)
  To: Michael Tokarev; +Cc: kay.sievers, gregkh, linux-kernel, linux-embedded

>>>>> "Michael" == Michael Tokarev <mjt@tls.msk.ru> writes:

Hi,

 >> +#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
 >> }

 Michael> May be completely not to the point or even wrong, but I were
 Michael> starring at this change for quite some time trying to understand
 Michael> what's the difference.  Can we do it like this:

 Michael> #ifdef CONFIG_TMPFS
 Michael> # define devtmpfs_fill_super shmem_fill_super
 Michael> #else
 Michael> # define devtmpfs_fill_super ramfs_fill_super
 Michael> #endif
 Michael>   	return get_sb_single(fs_type, flags, data, devtmpfs_fill_super, mnt);

 Michael> ?

Sure, if people find that cleaner - Kay?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-12 11:38   ` Peter Korsgaard
@ 2010-03-12 13:02     ` Kay Sievers
  2010-03-16 13:04       ` Peter Korsgaard
  0 siblings, 1 reply; 10+ messages in thread
From: Kay Sievers @ 2010-03-12 13:02 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: Michael Tokarev, gregkh, linux-kernel, linux-embedded

On Fri, Mar 12, 2010 at 12:38, Peter Korsgaard <jacmet@sunsite.dk> wrote:
>>>>>> "Michael" == Michael Tokarev <mjt@tls.msk.ru> writes:
>  >> +#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
>  >> }
>
>  Michael> May be completely not to the point or even wrong, but I were
>  Michael> starring at this change for quite some time trying to understand
>  Michael> what's the difference.  Can we do it like this:
>
>  Michael> #ifdef CONFIG_TMPFS
>  Michael> # define devtmpfs_fill_super shmem_fill_super
>  Michael> #else
>  Michael> # define devtmpfs_fill_super ramfs_fill_super
>  Michael> #endif
>  Michael>       return get_sb_single(fs_type, flags, data, devtmpfs_fill_super, mnt);

> Sure, if people find that cleaner - Kay?

For the style:
  I would prefer your original version.

For the patch:
  Acked-by: Kay Sievers <kay.sievers@vrfy.org>

Thanks,
Kay

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-12 13:02     ` Kay Sievers
@ 2010-03-16 13:04       ` Peter Korsgaard
  2010-03-16 13:37         ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Korsgaard @ 2010-03-16 13:04 UTC (permalink / raw)
  To: greg; +Cc: Kay Sievers, Michael Tokarev, linux-kernel, linux-embedded

>>>>> "Kay" == Kay Sievers <kay.sievers@vrfy.org> writes:

Hi,

 Kay> For the patch:
 Kay>   Acked-by: Kay Sievers <kay.sievers@vrfy.org>

Great - Greg, will you pick this up?

http://patchwork.kernel.org/patch/85237/

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-16 13:04       ` Peter Korsgaard
@ 2010-03-16 13:37         ` Greg KH
  0 siblings, 0 replies; 10+ messages in thread
From: Greg KH @ 2010-03-16 13:37 UTC (permalink / raw)
  To: Peter Korsgaard
  Cc: Kay Sievers, Michael Tokarev, linux-kernel, linux-embedded

On Tue, Mar 16, 2010 at 02:04:06PM +0100, Peter Korsgaard wrote:
> >>>>> "Kay" == Kay Sievers <kay.sievers@vrfy.org> writes:
> 
> Hi,
> 
>  Kay> For the patch:
>  Kay>   Acked-by: Kay Sievers <kay.sievers@vrfy.org>
> 
> Great - Greg, will you pick this up?
> 
> http://patchwork.kernel.org/patch/85237/

Yes, it's in my "to-apply" queue.  I'm at a conference for a few days,
so give me a few more :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-12 10:25 [PATCH] devtmpfs: support !CONFIG_TMPFS Peter Korsgaard
  2010-03-12 11:28 ` Michael Tokarev
@ 2010-03-16 19:00 ` Greg KH
  2010-03-16 19:14   ` Peter Korsgaard
  1 sibling, 1 reply; 10+ messages in thread
From: Greg KH @ 2010-03-16 19:00 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: kay.sievers, gregkh, linux-kernel, linux-embedded

On Fri, Mar 12, 2010 at 11:25:04AM +0100, Peter Korsgaard wrote:
> Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS,
> using ramfs instead.
> 
> Saves ~15KB.
> 
> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
> ---
>  drivers/base/Kconfig    |    2 +-
>  drivers/base/devtmpfs.c |    5 +++++
>  fs/ramfs/inode.c        |    2 +-
>  include/linux/ramfs.h   |    2 ++
>  4 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
> index fd52c48..7e33b16 100644
> --- a/drivers/base/Kconfig
> +++ b/drivers/base/Kconfig
> @@ -18,7 +18,7 @@ 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.
>  	  In this filesystem, the kernel driver core maintains device

With this patch, the Kconfig help text now is incorrect.
Is there a way to explicitly call out in the Kconfig which way devtmpfs
is being created?  How about a multiple selection that chooses either
TMPFS or RAMFS, with the default being TMPFS?

So care to redo this so that people can easily determine what is going
to happen easier than this patch currently causes?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-16 19:00 ` Greg KH
@ 2010-03-16 19:14   ` Peter Korsgaard
  2010-03-16 20:17     ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Korsgaard @ 2010-03-16 19:14 UTC (permalink / raw)
  To: Greg KH; +Cc: kay.sievers, gregkh, linux-kernel, linux-embedded

>>>>> "Greg" == Greg KH <greg@kroah.com> writes:

Hi,

 >> 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.
 >> In this filesystem, the kernel driver core maintains device

 Greg> With this patch, the Kconfig help text now is incorrect.

 Greg> Is there a way to explicitly call out in the Kconfig which way
 Greg> devtmpfs is being created?  How about a multiple selection that
 Greg> chooses either TMPFS or RAMFS, with the default being TMPFS?

I don't think that's needed - If CONFIG_TMPFS isn't set, then ramfs
pretends to be tmpfs anyway, see mm/shmem.c:

static struct file_system_type tmpfs_fs_type = {
	.name		= "tmpfs",
	.get_sb		= ramfs_get_sb,
	.kill_sb	= kill_litter_super,
};

So calling it tmpfs isn't really wrong.

 Greg> So care to redo this so that people can easily determine what is going
 Greg> to happen easier than this patch currently causes?

We can change the help text to say tmpfs/ramfs if you prefer - OK?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] devtmpfs: support !CONFIG_TMPFS
  2010-03-16 19:14   ` Peter Korsgaard
@ 2010-03-16 20:17     ` Greg KH
  2010-03-16 20:55       ` [PATCH-V2] " Peter Korsgaard
  0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2010-03-16 20:17 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: kay.sievers, gregkh, linux-kernel, linux-embedded

On Tue, Mar 16, 2010 at 08:14:05PM +0100, Peter Korsgaard wrote:
> >>>>> "Greg" == Greg KH <greg@kroah.com> writes:
> 
> Hi,
> 
>  >> 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.
>  >> In this filesystem, the kernel driver core maintains device
> 
>  Greg> With this patch, the Kconfig help text now is incorrect.
> 
>  Greg> Is there a way to explicitly call out in the Kconfig which way
>  Greg> devtmpfs is being created?  How about a multiple selection that
>  Greg> chooses either TMPFS or RAMFS, with the default being TMPFS?
> 
> I don't think that's needed - If CONFIG_TMPFS isn't set, then ramfs
> pretends to be tmpfs anyway, see mm/shmem.c:
> 
> static struct file_system_type tmpfs_fs_type = {
> 	.name		= "tmpfs",
> 	.get_sb		= ramfs_get_sb,
> 	.kill_sb	= kill_litter_super,
> };
> 
> So calling it tmpfs isn't really wrong.

Heh, wow, I didn't realize that.

>  Greg> So care to redo this so that people can easily determine what is going
>  Greg> to happen easier than this patch currently causes?
> 
> We can change the help text to say tmpfs/ramfs if you prefer - OK?

Yes, maybe with an explaination that if TMPFS is not set, ramfs will be
used.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH-V2] devtmpfs: support !CONFIG_TMPFS
  2010-03-16 20:17     ` Greg KH
@ 2010-03-16 20:55       ` Peter Korsgaard
  0 siblings, 0 replies; 10+ messages in thread
From: Peter Korsgaard @ 2010-03-16 20:55 UTC (permalink / raw)
  To: gregkh, kay.sievers, linux-kernel, linux-embedded; +Cc: Peter Korsgaard

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>
---
Changes since v1:
 - Added Kay's ack
 - Added comment about it using ramfs if CONFIG_TMPFS isn't enabled as
   requested by Greg

 drivers/base/Kconfig    |    7 +++++--
 drivers/base/devtmpfs.c |    5 +++++
 fs/ramfs/inode.c        |    2 +-
 include/linux/ramfs.h   |    2 ++
 4 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index fd52c48..ef38aff 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 dac478c..6927262 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>
@@ -44,7 +45,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 a6090aa..1a5259a 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -213,7 +213,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 4e768dd..8600508 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
-- 
1.7.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-03-16 20:55 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-12 10:25 [PATCH] devtmpfs: support !CONFIG_TMPFS Peter Korsgaard
2010-03-12 11:28 ` Michael Tokarev
2010-03-12 11:38   ` Peter Korsgaard
2010-03-12 13:02     ` Kay Sievers
2010-03-16 13:04       ` Peter Korsgaard
2010-03-16 13:37         ` Greg KH
2010-03-16 19:00 ` Greg KH
2010-03-16 19:14   ` Peter Korsgaard
2010-03-16 20:17     ` Greg KH
2010-03-16 20:55       ` [PATCH-V2] " Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).