[PATCH] init: add rootopts=%d for rootfs mount flags

From: Greg Depoire--Ferrer
Date: Tue Jun 29 2021 - 13:25:47 EST


Add the rootopts command line parameter to specify mount flags for the
root filesystem.

The kernel provides the rootflags parameter to specify filesystem
dependent options when mouting the root filesystem but did not provide
any way to set the filesystem independent flags.

This is not an issue on systems using an initrd because on these
systems, the rootflags parameter is passed to the /sbin/mount binary
which understands filesystem independent flags in the option string,
such as noatime (MS_NOATIME) or nodev (MS_NODEV).

Signed-off-by: Greg Depoire--Ferrer <greg.depoire@xxxxxxxxx>
---
Documentation/admin-guide/kernel-parameters.txt | 2 ++
init/do_mounts.c | 11 +++++++++++
2 files changed, 13 insertions(+)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 26453f250683..01e1217583f5 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -4851,6 +4851,8 @@

rootfstype= [KNL] Set root filesystem type

+ rootopts= [KNL] Set root filesystem mount flags bitmap
+
rootwait [KNL] Wait (indefinitely) for root device to show up.
Useful for devices that are detected asynchronously
(e.g. USB and MMC devices).
diff --git a/init/do_mounts.c b/init/do_mounts.c
index a78e44ee6adb..ebe51fc7cf86 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -326,6 +326,16 @@ static int __init root_data_setup(char *str)
return 1;
}

+static int __init root_flags_setup(char *str)
+{
+ int flags;
+
+ if (kstrtoint(str, 0, &flags))
+ return 0;
+ root_mountflags |= flags;
+ return 1;
+}
+
static char * __initdata root_fs_names;
static int __init fs_names_setup(char *str)
{
@@ -341,6 +351,7 @@ static int __init root_delay_setup(char *str)
}

__setup("rootflags=", root_data_setup);
+__setup("rootopts=", root_flags_setup);
__setup("rootfstype=", fs_names_setup);
__setup("rootdelay=", root_delay_setup);

--
2.31.1