[PATCH v2 0/3] init/initramfs.c: make initramfs support pivot_root

From: menglong8 . dong
Date: Tue May 25 2021 - 10:15:43 EST


From: Menglong Dong <dong.menglong@xxxxxxxxxx>

As Luis Chamberlain suggested, I split the patch:
[init/initramfs.c: make initramfs support pivot_root]
(https://lore.kernel.org/linux-fsdevel/20210520154244.20209-1-dong.menglong@xxxxxxxxxx/)
into three.

The goal of the series patches is to make pivot_root() support initramfs.

In the first patch, I introduce the function ramdisk_exec_exist(), which
is used to check the exist of 'ramdisk_execute_command' in LOOKUP_DOWN
lookup mode.

In the second patch, I create a second mount, which is called
'user root', and make it become the root. Therefore, the root has a
parent mount, and it can be umounted or pivot_root.

In the third patch, I fix rootfs_fs_type with ramfs, as it is not used
directly any more, and it make no sense to switch it between ramfs and
tmpfs, just fix it with ramfs to simplify the code.

Changes since V1:

In the first patch, I add the flag LOOKUP_DOWN to init_eaccess(), to make
it support the check of filesystem mounted on '/'.

In the second patch, I control 'user root' with kconfig option
'CONFIG_INITRAMFS_USER_ROOT', and add some comments, as Luis Chamberlain
suggested.

In the third patch, I make 'rootfs_fs_type' in control of
'CONFIG_INITRAMFS_USER_ROOT'.



Menglong Dong (3):
init/main.c: introduce function ramdisk_exec_exist()
init/do_cmounts.c: introduce 'user_root' for initramfs
init/do_mounts.c: fix rootfs_fs_type with ramfs

fs/init.c | 2 +-
include/linux/init.h | 5 ++
init/do_mounts.c | 109 +++++++++++++++++++++++++++++++++++++++++++
init/do_mounts.h | 18 ++++++-
init/initramfs.c | 10 ++++
init/main.c | 7 ++-
usr/Kconfig | 10 ++++
7 files changed, 158 insertions(+), 3 deletions(-)

--
2.32.0.rc0