* [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs
@ 2006-07-30 15:08 Al Boldi
2006-07-30 17:36 ` Hugh Dickins
2006-07-30 17:51 ` [stable] " Greg KH
0 siblings, 2 replies; 14+ messages in thread
From: Al Boldi @ 2006-07-30 15:08 UTC (permalink / raw)
To: linux-kernel, torvalds, stable; +Cc: akpm, chrisw, grim
Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option.
This patch is based on John Zielinski's
http://marc.theaimsgroup.com/?l=linux-kernel&m=107013630212011&w=4 patch.
Modified for 2.6.17.
RunTime tested on i386.
This trivial patch should go into 2.6.18.
Cc: <stable@kernel.org>
Cc: Chris Wright <chrisw@sous-sol.org>
Cc: Andrew Morton <akpm@osdl.org>
Cc: John Zielinski <grim@undead.cc>
Signed-off-by: Al Boldi <a1426z@gawab.com>
---
--- a/drivers/block/Kconfig 2006-07-30 16:44:59.000000000 +0300
+++ b/drivers/block/Kconfig 2006-07-30 16:45:53.000000000 +0300
@@ -412,6 +412,22 @@ config BLK_DEV_INITRD
If RAM disk support (BLK_DEV_RAM) is also included, this
also enables initial RAM disk (initrd) support.
+config SHM_ROOTFS
+ bool "Use tmpfs (shm) instead of ramfs for rootfs"
+ depends on BLK_DEV_INITRD
+ default n
+ select TMPFS
+ select SHMEM
+ help
+ This option switches rootfs so that it uses tmpfs rather than ramfs
+ for it's file storage. This makes rootfs swappable so having a large
+ initrd or initramfs image won't eat up valuable RAM.
+
+config RAMFS_ROOTFS
+ bool
+ depends on !SHM_ROOTFS
+ default y
+ select RAMFS
config CDROM_PKTCDVD
tristate "Packet writing on CD/DVD media"
--- a/fs/Kconfig 2006-07-30 16:45:25.000000000 +0300
+++ b/fs/Kconfig 2006-07-30 16:46:36.000000000 +0300
@@ -853,7 +853,7 @@ config HUGETLB_PAGE
def_bool HUGETLBFS
config RAMFS
- bool
+ tristate "Ramfs file system support"
default y
---help---
Ramfs is a file system which keeps all files in RAM. It allows
--- a/fs/ramfs/inode.c 2006-07-30 16:45:37.000000000 +0300
+++ b/fs/ramfs/inode.c 2006-07-30 16:46:36.000000000 +0300
@@ -191,22 +191,27 @@ struct super_block *ramfs_get_sb(struct
return get_sb_nodev(fs_type, flags, data, ramfs_fill_super);
}
+#ifdef CONFIG_RAMFS_ROOTFS
static struct super_block *rootfs_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data)
{
return get_sb_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super);
}
+#endif
static struct file_system_type ramfs_fs_type = {
.name = "ramfs",
.get_sb = ramfs_get_sb,
.kill_sb = kill_litter_super,
};
+
+#ifdef CONFIG_RAMFS_ROOTFS
static struct file_system_type rootfs_fs_type = {
.name = "rootfs",
.get_sb = rootfs_get_sb,
.kill_sb = kill_litter_super,
};
+#endif
static int __init init_ramfs_fs(void)
{
@@ -221,9 +226,11 @@ static void __exit exit_ramfs_fs(void)
module_init(init_ramfs_fs)
module_exit(exit_ramfs_fs)
+#ifdef CONFIG_RAMFS_ROOTFS
int __init init_rootfs(void)
{
return register_filesystem(&rootfs_fs_type);
}
+#endif
MODULE_LICENSE("GPL");
--- a/mm/shmem.c 2006-07-30 16:45:54.000000000 +0300
+++ b/mm/shmem.c 2006-07-30 16:47:11.000000000 +0300
@@ -2123,7 +2123,7 @@ failed:
return err;
}
-static struct kmem_cache *shmem_inode_cachep;
+static struct kmem_cache *shmem_inode_cachep = NULL;
static struct inode *shmem_alloc_inode(struct super_block *sb)
{
@@ -2156,11 +2156,13 @@ static void init_once(void *foo, struct
static int init_inodecache(void)
{
- shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
- sizeof(struct shmem_inode_info),
- 0, 0, init_once, NULL);
- if (shmem_inode_cachep == NULL)
- return -ENOMEM;
+ if(!shmem_inode_cachep) {
+ shmem_inode_cachep = kmem_cache_create("shmem_inode_cache",
+ sizeof(struct shmem_inode_info),
+ 0, 0, init_once, NULL);
+ if (shmem_inode_cachep == NULL)
+ return -ENOMEM;
+ }
return 0;
}
@@ -2345,6 +2347,27 @@ put_memory:
return ERR_PTR(error);
}
+#ifdef CONFIG_SHM_ROOTFS
+static struct super_block *rootfs_get_sb(struct file_system_type *fs_type,
+ int flags, const char *dev_name, void *data)
+{
+ return get_sb_single(fs_type, flags, data, shmem_fill_super);
+}
+
+static struct file_system_type rootfs_fs_type = {
+ .name = "rootfs",
+ .get_sb = rootfs_get_sb,
+ .kill_sb = kill_litter_super,
+};
+
+int __init init_rootfs(void)
+{
+ if (init_inodecache())
+ panic("Can't initialize shm inode cache");
+ return register_filesystem(&rootfs_fs_type);
+}
+#endif
+
/*
* shmem_zero_setup - setup a shared anonymous mapping
*
--
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 15:08 [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs Al Boldi @ 2006-07-30 17:36 ` Hugh Dickins 2006-07-30 18:48 ` H. Peter Anvin 2006-07-30 21:03 ` Al Boldi 2006-07-30 17:51 ` [stable] " Greg KH 1 sibling, 2 replies; 14+ messages in thread From: Hugh Dickins @ 2006-07-30 17:36 UTC (permalink / raw) To: Al Boldi Cc: H. Peter Anvin, Rob Landley, linux-kernel, torvalds, stable, akpm, chrisw, grim On Sun, 30 Jul 2006, Al Boldi wrote: > > Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. Why? Looking further down we see what you should have explained here: > + This option switches rootfs so that it uses tmpfs rather than ramfs > + for its file storage. This makes rootfs swappable so having a large > + initrd or initramfs image won't eat up valuable RAM. Now, I'm far from an expert on initramfs and early userspace, but my understanding is that the "init" of a (properly designed) initramfs would pretty much "rm -rf" everything in the initramfs before passing control to the final "init". So (almost?) no valuable RAM is eaten up, nor the less valuable swap if you do extend this to tmpfs (unless something gets left open, which I think should not be the case). So I'm inclined to say that this patch is simply unnecessary. But if people who know better think it's a good thing, I've no objection (though I've not tried it): the Kconfiggery looks more likely to provoke argument than the tmpfs/ramfs mods. > > This patch is based on John Zielinski's > http://marc.theaimsgroup.com/?l=linux-kernel&m=107013630212011&w=4 patch. > > Modified for 2.6.17. > > RunTime tested on i386. > > This trivial patch should go into 2.6.18. Well... > > Cc: <stable@kernel.org> > Cc: Chris Wright <chrisw@sous-sol.org> Umm, the -stable tree doesn't usually take enhancements, even if you think it's a very stable enhancement. > Cc: Andrew Morton <akpm@osdl.org> > Cc: John Zielinski <grim@undead.cc> > Signed-off-by: Al Boldi <a1426z@gawab.com> > > --- > --- a/drivers/block/Kconfig 2006-07-30 16:44:59.000000000 +0300 > +++ b/drivers/block/Kconfig 2006-07-30 16:45:53.000000000 +0300 > @@ -412,6 +412,22 @@ config BLK_DEV_INITRD > If RAM disk support (BLK_DEV_RAM) is also included, this > also enables initial RAM disk (initrd) support. > > +config SHM_ROOTFS Please say TMPFS_ROOTFS rather than SHM_ROOTFS throughout. > + bool "Use tmpfs (shm) instead of ramfs for rootfs" > + depends on BLK_DEV_INITRD > + default n > + select TMPFS > + select SHMEM Selects can be troublesome, but you may well have decided right. > + help > + This option switches rootfs so that it uses tmpfs rather than ramfs > + for it's file storage. This makes rootfs swappable so having a large its > + initrd or initramfs image won't eat up valuable RAM. > + > +config RAMFS_ROOTFS > + bool > + depends on !SHM_ROOTFS > + default y > + select RAMFS > > config CDROM_PKTCDVD > tristate "Packet writing on CD/DVD media" > --- a/fs/Kconfig 2006-07-30 16:45:25.000000000 +0300 > +++ b/fs/Kconfig 2006-07-30 16:46:36.000000000 +0300 > @@ -853,7 +853,7 @@ config HUGETLB_PAGE > def_bool HUGETLBFS > > config RAMFS > - bool > + tristate "Ramfs file system support" > default y > ---help--- > Ramfs is a file system which keeps all files in RAM. It allows > --- a/fs/ramfs/inode.c 2006-07-30 16:45:37.000000000 +0300 > +++ b/fs/ramfs/inode.c 2006-07-30 16:46:36.000000000 +0300 > @@ -191,22 +191,27 @@ struct super_block *ramfs_get_sb(struct > return get_sb_nodev(fs_type, flags, data, ramfs_fill_super); > } > > +#ifdef CONFIG_RAMFS_ROOTFS > static struct super_block *rootfs_get_sb(struct file_system_type *fs_type, > int flags, const char *dev_name, void *data) > { > return get_sb_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super); > } > +#endif > > static struct file_system_type ramfs_fs_type = { > .name = "ramfs", > .get_sb = ramfs_get_sb, > .kill_sb = kill_litter_super, > }; > + > +#ifdef CONFIG_RAMFS_ROOTFS > static struct file_system_type rootfs_fs_type = { > .name = "rootfs", > .get_sb = rootfs_get_sb, > .kill_sb = kill_litter_super, > }; > +#endif > > static int __init init_ramfs_fs(void) > { > @@ -221,9 +226,11 @@ static void __exit exit_ramfs_fs(void) > module_init(init_ramfs_fs) > module_exit(exit_ramfs_fs) > > +#ifdef CONFIG_RAMFS_ROOTFS > int __init init_rootfs(void) > { > return register_filesystem(&rootfs_fs_type); > } > +#endif > > MODULE_LICENSE("GPL"); > --- a/mm/shmem.c 2006-07-30 16:45:54.000000000 +0300 > +++ b/mm/shmem.c 2006-07-30 16:47:11.000000000 +0300 > @@ -2123,7 +2123,7 @@ failed: > return err; > } > > -static struct kmem_cache *shmem_inode_cachep; > +static struct kmem_cache *shmem_inode_cachep = NULL; No need to initialize static variables to 0 (or is someone going to raise the spectre of NULL being non-0 on some future architecture?) > > static struct inode *shmem_alloc_inode(struct super_block *sb) > { > @@ -2156,11 +2156,13 @@ static void init_once(void *foo, struct > > static int init_inodecache(void) > { > - shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", > - sizeof(struct shmem_inode_info), > - 0, 0, init_once, NULL); > - if (shmem_inode_cachep == NULL) > - return -ENOMEM; > + if(!shmem_inode_cachep) { if (shmem_inode_cachep == NULL) { is more consistent with the nearby style > + shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", > + sizeof(struct shmem_inode_info), > + 0, 0, init_once, NULL); > + if (shmem_inode_cachep == NULL) > + return -ENOMEM; > + } > return 0; > } > > @@ -2345,6 +2347,27 @@ put_memory: > return ERR_PTR(error); > } > > +#ifdef CONFIG_SHM_ROOTFS > +static struct super_block *rootfs_get_sb(struct file_system_type *fs_type, > + int flags, const char *dev_name, void *data) > +{ > + return get_sb_single(fs_type, flags, data, shmem_fill_super); > +} > + > +static struct file_system_type rootfs_fs_type = { > + .name = "rootfs", > + .get_sb = rootfs_get_sb, > + .kill_sb = kill_litter_super, > +}; > + > +int __init init_rootfs(void) > +{ > + if (init_inodecache()) > + panic("Can't initialize shm inode cache"); "tmpfs inode cache" or "shmem inode cache" > + return register_filesystem(&rootfs_fs_type); > +} > +#endif > + > /* > * shmem_zero_setup - setup a shared anonymous mapping > * ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 17:36 ` Hugh Dickins @ 2006-07-30 18:48 ` H. Peter Anvin 2006-07-30 21:03 ` Al Boldi 2006-07-31 14:35 ` Rob Landley 2006-07-30 21:03 ` Al Boldi 1 sibling, 2 replies; 14+ messages in thread From: H. Peter Anvin @ 2006-07-30 18:48 UTC (permalink / raw) To: Hugh Dickins Cc: Al Boldi, Rob Landley, linux-kernel, torvalds, stable, akpm, chrisw, grim Hugh Dickins wrote: > On Sun, 30 Jul 2006, Al Boldi wrote: >> Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. > > Why? Looking further down we see what you should have explained here: >> + This option switches rootfs so that it uses tmpfs rather than ramfs >> + for its file storage. This makes rootfs swappable so having a large >> + initrd or initramfs image won't eat up valuable RAM. > > Now, I'm far from an expert on initramfs and early userspace, but my > understanding is that the "init" of a (properly designed) initramfs > would pretty much "rm -rf" everything in the initramfs before passing > control to the final "init". So (almost?) no valuable RAM is eaten > up, nor the less valuable swap if you do extend this to tmpfs (unless > something gets left open, which I think should not be the case). > > So I'm inclined to say that this patch is simply unnecessary. But > if people who know better think it's a good thing, I've no objection > (though I've not tried it): the Kconfiggery looks more likely to > provoke argument than the tmpfs/ramfs mods. > Well... There is some justification: embedded people would like to load inittmpfs and then continue running. The main issue -- which I am not sure what effect this patch has -- is that we would really like to move initramfs initialization even earlier in the kernel, so that it can include firmware loading for built-in device drivers, for example. Thus, if this patch makes it harder to push initramfs initialization earlier, it's probably a bad thing. If not, the author of the patch really needs to explain why it works and why it doesn't add new dependencies to the initialization order. Saying "this is a trivial patch" and pushing it on the -stable tree doesn't inspire too much confidence, as initialization is subtle. -hpa ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 18:48 ` H. Peter Anvin @ 2006-07-30 21:03 ` Al Boldi 2006-07-31 19:24 ` H. Peter Anvin 2006-07-31 14:35 ` Rob Landley 1 sibling, 1 reply; 14+ messages in thread From: Al Boldi @ 2006-07-30 21:03 UTC (permalink / raw) To: H. Peter Anvin Cc: Rob Landley, linux-kernel, torvalds, stable, akpm, chrisw, grim, Hugh Dickins H. Peter Anvin wrote: > Hugh Dickins wrote: > > On Sun, 30 Jul 2006, Al Boldi wrote: > >> Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. > > > > Why? Looking further down we see what you should have explained here: > >> + This option switches rootfs so that it uses tmpfs rather than ramfs > >> + for its file storage. This makes rootfs swappable so having a large > >> + initrd or initramfs image won't eat up valuable RAM. > > > > Now, I'm far from an expert on initramfs and early userspace, but my > > understanding is that the "init" of a (properly designed) initramfs > > would pretty much "rm -rf" everything in the initramfs before passing > > control to the final "init". So (almost?) no valuable RAM is eaten > > up, nor the less valuable swap if you do extend this to tmpfs (unless > > something gets left open, which I think should not be the case). > > > > So I'm inclined to say that this patch is simply unnecessary. But > > if people who know better think it's a good thing, I've no objection > > (though I've not tried it): the Kconfiggery looks more likely to > > provoke argument than the tmpfs/ramfs mods. > > Well... > > There is some justification: embedded people would like to load > inittmpfs and then continue running. > > The main issue -- which I am not sure what effect this patch has -- is > that we would really like to move initramfs initialization even earlier > in the kernel, so that it can include firmware loading for built-in > device drivers, for example. I suspect, if there would be a problem with tmpfs, then ramfs would be no different. > Thus, if this patch makes it harder to push initramfs initialization > earlier, it's probably a bad thing. Agreed, but remember that tmpfs is an option, not a replacement. > If not, the author of the patch > really needs to explain why it works and why it doesn't add new > dependencies to the initialization order. > > Saying "this is a trivial patch" and pushing it on the -stable tree > doesn't inspire too much confidence, as initialization is subtle. Ok, I did play with main.c, and as you mentioned, initialization is subtle. But categorizing this patch as trivial is based more on the fact, that ramfs and tmpfs are semantically equivalent, and as such should not impose additional dependencies. Thanks for your comments! -- Al ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 21:03 ` Al Boldi @ 2006-07-31 19:24 ` H. Peter Anvin 0 siblings, 0 replies; 14+ messages in thread From: H. Peter Anvin @ 2006-07-31 19:24 UTC (permalink / raw) To: Al Boldi Cc: Rob Landley, linux-kernel, torvalds, stable, akpm, chrisw, grim, Hugh Dickins Al Boldi wrote: >> >> The main issue -- which I am not sure what effect this patch has -- is >> that we would really like to move initramfs initialization even earlier >> in the kernel, so that it can include firmware loading for built-in >> device drivers, for example. > > I suspect, if there would be a problem with tmpfs, then ramfs would be no > different. > That is a very bold assumption (a.k.a. "just plain wrong".) ramfs and tmpfs are a lot more different than one would normally think from a kernel internals perspective. >> Thus, if this patch makes it harder to push initramfs initialization >> earlier, it's probably a bad thing. > > Agreed, but remember that tmpfs is an option, not a replacement. Red herring. If it goes in, it needs to be supportable going forward. >> If not, the author of the patch >> really needs to explain why it works and why it doesn't add new >> dependencies to the initialization order. >> >> Saying "this is a trivial patch" and pushing it on the -stable tree >> doesn't inspire too much confidence, as initialization is subtle. > > Ok, I did play with main.c, and as you mentioned, initialization is subtle. > But categorizing this patch as trivial is based more on the fact, that ramfs > and tmpfs are semantically equivalent, and as such should not impose > additional dependencies. Again, that's just plain wrong. -hpa ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 18:48 ` H. Peter Anvin 2006-07-30 21:03 ` Al Boldi @ 2006-07-31 14:35 ` Rob Landley 1 sibling, 0 replies; 14+ messages in thread From: Rob Landley @ 2006-07-31 14:35 UTC (permalink / raw) To: H. Peter Anvin Cc: Hugh Dickins, Al Boldi, linux-kernel, torvalds, stable, akpm, chrisw, grim I am totally out of the loop here. (BusyBox has been taking up all my time for months now...) I thought rootfs already would be tmpfs whenever that was compiled into the kernel, but I suspect the kernel I was looking at to come to that conclusion wasn't vanilla. Still, that implies this isn't the first patch out there to do this... On Sunday 30 July 2006 2:48 pm, H. Peter Anvin wrote: > There is some justification: embedded people would like to load > inittmpfs and then continue running. Yup. Embedded people who generally have no swap anyway. (Swap to flash is a bad idea.) However, I believe what they were after was the ability to limit the filesystem size so runaway logs don't trigger the OOM killer. > The main issue -- which I am not sure what effect this patch has -- is > that we would really like to move initramfs initialization even earlier > in the kernel, so that it can include firmware loading for built-in > device drivers, for example. I remember this was "pending" late last year. Thought it had made it into 2.6.16 or so. I need _way_ more time to read the kernel list. (I'm 50,197 messages behind. That's just silly...) > Thus, if this patch makes it harder to push initramfs initialization > earlier, it's probably a bad thing. If not, the author of the patch > really needs to explain why it works and why it doesn't add new > dependencies to the initialization order. > > Saying "this is a trivial patch" and pushing it on the -stable tree > doesn't inspire too much confidence, as initialization is subtle. It doesn't look like -stable material to me either. It might be small enough to add to the current -devel cycle, but that's not my call. Is there any current documentation on the kernel's init sequence other than reading init/main.c and friends? > -hpa Rob -- Never bet against the cheap plastic solution. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 17:36 ` Hugh Dickins 2006-07-30 18:48 ` H. Peter Anvin @ 2006-07-30 21:03 ` Al Boldi 1 sibling, 0 replies; 14+ messages in thread From: Al Boldi @ 2006-07-30 21:03 UTC (permalink / raw) To: Hugh Dickins Cc: H. Peter Anvin, Rob Landley, linux-kernel, torvalds, stable, akpm, chrisw, grim Hugh Dickins wrote: > On Sun, 30 Jul 2006, Al Boldi wrote: > > Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. > > Why? Looking further down we see what you should have explained here: > > + This option switches rootfs so that it uses tmpfs rather than ramfs > > + for its file storage. This makes rootfs swappable so having a large > > + initrd or initramfs image won't eat up valuable RAM. > > Now, I'm far from an expert on initramfs and early userspace, but my > understanding is that the "init" of a (properly designed) initramfs > would pretty much "rm -rf" everything in the initramfs before passing > control to the final "init". So (almost?) no valuable RAM is eaten > up, nor the less valuable swap if you do extend this to tmpfs (unless > something gets left open, which I think should not be the case). > > So I'm inclined to say that this patch is simply unnecessary. But > if people who know better think it's a good thing, I've no objection > (though I've not tried it): the Kconfiggery looks more likely to > provoke argument than the tmpfs/ramfs mods. > > > This patch is based on John Zielinski's > > http://marc.theaimsgroup.com/?l=linux-kernel&m=107013630212011&w=4 > > patch. > > > > Modified for 2.6.17. > > > > RunTime tested on i386. > > > > This trivial patch should go into 2.6.18. > > Well... > > > Cc: <stable@kernel.org> > > Cc: Chris Wright <chrisw@sous-sol.org> > > Umm, the -stable tree doesn't usually take enhancements, > even if you think it's a very stable enhancement. > > > Cc: Andrew Morton <akpm@osdl.org> > > Cc: John Zielinski <grim@undead.cc> > > Signed-off-by: Al Boldi <a1426z@gawab.com> > > > > --- > > --- a/drivers/block/Kconfig 2006-07-30 16:44:59.000000000 +0300 > > +++ b/drivers/block/Kconfig 2006-07-30 16:45:53.000000000 +0300 > > @@ -412,6 +412,22 @@ config BLK_DEV_INITRD > > If RAM disk support (BLK_DEV_RAM) is also included, this > > also enables initial RAM disk (initrd) support. > > > > +config SHM_ROOTFS > > Please say TMPFS_ROOTFS rather than SHM_ROOTFS throughout. Ok. > > + bool "Use tmpfs (shm) instead of ramfs for rootfs" > > + depends on BLK_DEV_INITRD > > + default n > > + select TMPFS > > + select SHMEM > > Selects can be troublesome, but you may well have decided right. > > > + help > > + This option switches rootfs so that it uses tmpfs rather than ramfs > > + for it's file storage. This makes rootfs swappable so having a > > large > > its Yes. > > + initrd or initramfs image won't eat up valuable RAM. > > + > > +config RAMFS_ROOTFS > > + bool > > + depends on !SHM_ROOTFS > > + default y > > + select RAMFS > > > > config CDROM_PKTCDVD > > tristate "Packet writing on CD/DVD media" > > --- a/fs/Kconfig 2006-07-30 16:45:25.000000000 +0300 > > +++ b/fs/Kconfig 2006-07-30 16:46:36.000000000 +0300 > > @@ -853,7 +853,7 @@ config HUGETLB_PAGE > > def_bool HUGETLBFS > > > > config RAMFS > > - bool > > + tristate "Ramfs file system support" > > default y > > ---help--- > > Ramfs is a file system which keeps all files in RAM. It allows > > --- a/fs/ramfs/inode.c 2006-07-30 16:45:37.000000000 +0300 > > +++ b/fs/ramfs/inode.c 2006-07-30 16:46:36.000000000 +0300 > > @@ -191,22 +191,27 @@ struct super_block *ramfs_get_sb(struct > > return get_sb_nodev(fs_type, flags, data, ramfs_fill_super); > > } > > > > +#ifdef CONFIG_RAMFS_ROOTFS > > static struct super_block *rootfs_get_sb(struct file_system_type > > *fs_type, int flags, const char *dev_name, void *data) > > { > > return get_sb_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super); > > } > > +#endif > > > > static struct file_system_type ramfs_fs_type = { > > .name = "ramfs", > > .get_sb = ramfs_get_sb, > > .kill_sb = kill_litter_super, > > }; > > + > > +#ifdef CONFIG_RAMFS_ROOTFS > > static struct file_system_type rootfs_fs_type = { > > .name = "rootfs", > > .get_sb = rootfs_get_sb, > > .kill_sb = kill_litter_super, > > }; > > +#endif > > > > static int __init init_ramfs_fs(void) > > { > > @@ -221,9 +226,11 @@ static void __exit exit_ramfs_fs(void) > > module_init(init_ramfs_fs) > > module_exit(exit_ramfs_fs) > > > > +#ifdef CONFIG_RAMFS_ROOTFS > > int __init init_rootfs(void) > > { > > return register_filesystem(&rootfs_fs_type); > > } > > +#endif > > > > MODULE_LICENSE("GPL"); > > --- a/mm/shmem.c 2006-07-30 16:45:54.000000000 +0300 > > +++ b/mm/shmem.c 2006-07-30 16:47:11.000000000 +0300 > > @@ -2123,7 +2123,7 @@ failed: > > return err; > > } > > > > -static struct kmem_cache *shmem_inode_cachep; > > +static struct kmem_cache *shmem_inode_cachep = NULL; > > No need to initialize static variables to 0 (or is someone going to > raise the spectre of NULL being non-0 on some future architecture?) Don't know. > > static struct inode *shmem_alloc_inode(struct super_block *sb) > > { > > @@ -2156,11 +2156,13 @@ static void init_once(void *foo, struct > > > > static int init_inodecache(void) > > { > > - shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", > > - sizeof(struct shmem_inode_info), > > - 0, 0, init_once, NULL); > > - if (shmem_inode_cachep == NULL) > > - return -ENOMEM; > > + if(!shmem_inode_cachep) { > > if (shmem_inode_cachep == NULL) { > is more consistent with the nearby style Ok. > > + shmem_inode_cachep = kmem_cache_create("shmem_inode_cache", > > + sizeof(struct shmem_inode_info), > > + 0, 0, init_once, NULL); > > + if (shmem_inode_cachep == NULL) > > + return -ENOMEM; > > + } > > return 0; > > } > > > > @@ -2345,6 +2347,27 @@ put_memory: > > return ERR_PTR(error); > > } > > > > +#ifdef CONFIG_SHM_ROOTFS > > +static struct super_block *rootfs_get_sb(struct file_system_type > > *fs_type, + int flags, const char *dev_name, void *data) > > +{ > > + return get_sb_single(fs_type, flags, data, shmem_fill_super); > > +} > > + > > +static struct file_system_type rootfs_fs_type = { > > + .name = "rootfs", > > + .get_sb = rootfs_get_sb, > > + .kill_sb = kill_litter_super, > > +}; > > + > > +int __init init_rootfs(void) > > +{ > > + if (init_inodecache()) > > + panic("Can't initialize shm inode cache"); > > "tmpfs inode cache" > or "shmem inode cache" Yes, shmem. > > + return register_filesystem(&rootfs_fs_type); > > +} > > +#endif > > + > > /* > > * shmem_zero_setup - setup a shared anonymous mapping > > * Thanks for your review! -- Al ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 15:08 [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs Al Boldi 2006-07-30 17:36 ` Hugh Dickins @ 2006-07-30 17:51 ` Greg KH 2006-07-30 21:03 ` Al Boldi 1 sibling, 1 reply; 14+ messages in thread From: Greg KH @ 2006-07-30 17:51 UTC (permalink / raw) To: Al Boldi; +Cc: linux-kernel, torvalds, stable, akpm, chrisw, grim On Sun, Jul 30, 2006 at 06:08:14PM +0300, Al Boldi wrote: > > Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. > > This patch is based on John Zielinski's > http://marc.theaimsgroup.com/?l=linux-kernel&m=107013630212011&w=4 patch. > > Modified for 2.6.17. > > RunTime tested on i386. > > This trivial patch should go into 2.6.18. This looks like a new feature. What problem does it fix that would make it acceptable to add to the -stable tree? thanks, greg k-h ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 17:51 ` [stable] " Greg KH @ 2006-07-30 21:03 ` Al Boldi 2006-07-31 19:25 ` H. Peter Anvin 2006-07-31 19:30 ` Chris Wright 0 siblings, 2 replies; 14+ messages in thread From: Al Boldi @ 2006-07-30 21:03 UTC (permalink / raw) To: Greg KH; +Cc: linux-kernel, torvalds, stable, akpm, chrisw, grim Greg KH wrote: > On Sun, Jul 30, 2006 at 06:08:14PM +0300, Al Boldi wrote: > > Replugs rootfs to use tmpfs instead of ramfs as a Kconfig option. > > > > This patch is based on John Zielinski's > > http://marc.theaimsgroup.com/?l=linux-kernel&m=107013630212011&w=4 > > patch. > > > > Modified for 2.6.17. > > > > RunTime tested on i386. > > > > This trivial patch should go into 2.6.18. > > This looks like a new feature. What problem does it fix that would make > it acceptable to add to the -stable tree? Well, ramfs has some pitfalls, which doesn't make it suitable for a long-lived rootfs. OTOH, tmpfs is much more mature, while semantically the same. Being semantically the same, while not exhibiting ramfs pitfalls, makes it suitable to be pushed into the -stable tree, IMHO. It's your call, but this patch should have been in 2.6 since day 1. Thanks! -- Al ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 21:03 ` Al Boldi @ 2006-07-31 19:25 ` H. Peter Anvin 2006-07-31 20:58 ` Al Boldi 2006-07-31 19:30 ` Chris Wright 1 sibling, 1 reply; 14+ messages in thread From: H. Peter Anvin @ 2006-07-31 19:25 UTC (permalink / raw) To: Al Boldi; +Cc: Greg KH, linux-kernel, torvalds, stable, akpm, chrisw, grim Al Boldi wrote: > > Well, ramfs has some pitfalls, which doesn't make it suitable for a > long-lived rootfs. OTOH, tmpfs is much more mature, while semantically the > same. > > Being semantically the same, while not exhibiting ramfs pitfalls, makes it > suitable to be pushed into the -stable tree, IMHO. > This is total nonsense. They're very different from an implementation standpoint. -hpa ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-31 19:25 ` H. Peter Anvin @ 2006-07-31 20:58 ` Al Boldi 2006-07-31 23:20 ` H. Peter Anvin 0 siblings, 1 reply; 14+ messages in thread From: Al Boldi @ 2006-07-31 20:58 UTC (permalink / raw) To: H. Peter Anvin Cc: Greg KH, linux-kernel, torvalds, stable, akpm, chrisw, grim H. Peter Anvin wrote: > Al Boldi wrote: > > Well, ramfs has some pitfalls, which doesn't make it suitable for a > > long-lived rootfs. OTOH, tmpfs is much more mature, while semantically > > the same. > > > > Being semantically the same, while not exhibiting ramfs pitfalls, makes > > it suitable to be pushed into the -stable tree, IMHO. > > This is total nonsense. Are you sure? > They're very different from an implementation standpoint. Think ext2/3. Thanks! -- Al ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-31 20:58 ` Al Boldi @ 2006-07-31 23:20 ` H. Peter Anvin 0 siblings, 0 replies; 14+ messages in thread From: H. Peter Anvin @ 2006-07-31 23:20 UTC (permalink / raw) To: Al Boldi; +Cc: Greg KH, linux-kernel, torvalds, stable, akpm, chrisw, grim Al Boldi wrote: >>> >>> Being semantically the same, while not exhibiting ramfs pitfalls, makes >>> it suitable to be pushed into the -stable tree, IMHO. >> This is total nonsense. > > Are you sure? > Yes. >> They're very different from an implementation standpoint. > > Think ext2/3. Not applicable to this case. -hpa ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-30 21:03 ` Al Boldi 2006-07-31 19:25 ` H. Peter Anvin @ 2006-07-31 19:30 ` Chris Wright 2006-07-31 20:58 ` Al Boldi 1 sibling, 1 reply; 14+ messages in thread From: Chris Wright @ 2006-07-31 19:30 UTC (permalink / raw) To: Al Boldi; +Cc: Greg KH, linux-kernel, torvalds, stable, akpm, chrisw, grim * Al Boldi (a1426z@gawab.com) wrote: > Being semantically the same, while not exhibiting ramfs pitfalls, makes it > suitable to be pushed into the -stable tree, IMHO. You are failing to show how this is a critical type bugfix for -stable. We are picky about -stable additions because we don't want to undermine the value of the -stable tree. thanks, -chris ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [stable] [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs 2006-07-31 19:30 ` Chris Wright @ 2006-07-31 20:58 ` Al Boldi 0 siblings, 0 replies; 14+ messages in thread From: Al Boldi @ 2006-07-31 20:58 UTC (permalink / raw) To: Chris Wright; +Cc: Greg KH, linux-kernel, torvalds, stable, akpm, chrisw, grim Chris Wright wrote: > * Al Boldi (a1426z@gawab.com) wrote: > > Being semantically the same, while not exhibiting ramfs pitfalls, makes > > it suitable to be pushed into the -stable tree, IMHO. > > You are failing to show how this is a critical type bugfix for -stable. > We are picky about -stable additions because we don't want to undermine > the value of the -stable tree. If you mean critical as in "the kernel panics on boot without this patch", then yes, this patch is not critical. But if you think it's important to allow -stable to make full use of rootfs, then this patch offers a much needed fix, by simply replugging existing code. Again, it's your call. Thanks! -- Al ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2006-07-31 23:21 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-07-30 15:08 [PATCH] initramfs: Allow rootfs to use tmpfs instead of ramfs Al Boldi 2006-07-30 17:36 ` Hugh Dickins 2006-07-30 18:48 ` H. Peter Anvin 2006-07-30 21:03 ` Al Boldi 2006-07-31 19:24 ` H. Peter Anvin 2006-07-31 14:35 ` Rob Landley 2006-07-30 21:03 ` Al Boldi 2006-07-30 17:51 ` [stable] " Greg KH 2006-07-30 21:03 ` Al Boldi 2006-07-31 19:25 ` H. Peter Anvin 2006-07-31 20:58 ` Al Boldi 2006-07-31 23:20 ` H. Peter Anvin 2006-07-31 19:30 ` Chris Wright 2006-07-31 20:58 ` Al Boldi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox