123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- From 9a18df7a71bfa620b1278777d64783a359d7eb4e Mon Sep 17 00:00:00 2001
- From: Thorsten Glaser <tg@mirbsd.org>
- Date: Sun, 4 May 2014 01:37:54 +0200
- Subject: [PATCH] mount tmpfs-as-rootfs (initramfs) with -o
- nr_blocks=0,nr_inodes=0
- I would have preferred to write this patch to be able to pass
- rootflags=nr_blocks=0,nr_inodes=0 on the kernel command line,
- and then hand these rootflags over to the initramfs (tmpfs)
- mount in the same way the kernel hands them over to the block
- device rootfs mount. But at least the Debian/m68k initrd also
- parses $rootflags from the environment and adds it to the call
- to the user-space mount for the eventual root device, which
- would make the kernel command line rootflags option be used in
- both places (tmpfs and e.g. ext4) which is guaranteed to error
- out in at least one of them.
- This change is intended to aid people in a setup where the
- initrd is the final root filesystem, i.e. not mounted over.
- This is especially useful in automated tests running on qemu
- for boards with constrained memory (e.g. 64 MiB on sh4).
- Considering that the initramfs is normally emptied out then
- overmounted, this change is probably safe for setups where
- initramfs just hosts early userspace, too, since the tmpfs
- backing it is not accessible any more later on, AFAICT.
- Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
- ---
- init/do_mounts.c | 4 ++++
- 1 file changed, 4 insertions(+)
- diff --git a/init/do_mounts.c b/init/do_mounts.c
- index 82f2288..55a4cfe 100644
- --- a/init/do_mounts.c
- +++ b/init/do_mounts.c
- @@ -594,6 +594,7 @@ out:
- }
-
- static bool is_tmpfs;
- +static char tmpfs_rootflags[] = "nr_blocks=0,nr_inodes=0";
- static struct dentry *rootfs_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
- {
- @@ -606,6 +607,9 @@ static struct dentry *rootfs_mount(struct file_system_type *fs_type,
- if (IS_ENABLED(CONFIG_TMPFS) && is_tmpfs)
- fill = shmem_fill_super;
-
- + if (is_tmpfs)
- + data = tmpfs_rootflags;
- +
- return mount_nodev(fs_type, flags, data, fill);
- }
-
- --
- 2.0.0.rc0
|