[systemd-devel] [PATCH] fstab-generator: respect noauto/nofail when adding sysroot mount

Vivek Goyal vgoyal at redhat.com
Fri Aug 9 06:35:27 PDT 2013


On Thu, Aug 08, 2013 at 03:18:11PM +0800, WANG Chao wrote:
> Currently we don't respect noauto/nofail root mount options (from
> rootflags kernel cmdline). We should map these two flags to the
> corresponding boolean variable noauto and nofail when calling
> add_mount().
> 
> Signed-off-by: WANG Chao <chaowang at redhat.com>

Chao,

Will this work for other mount points as specified by dracut command
line --mount?

IOW, if I specify a mount point using --mount and specify "nofail" in 
filesystem options, and if that file system can't be mounted, what
will happen. Will we continue to run pre-pivot service?

Thanks
Vivek

> ---
> 
> Days ago, I sent a patch to add rd.weak_sysroot. It seems you guys don't like
> it, even me neither :(
> 
> So I come up with this update. It looks more reasonable. With this patch, I can
> set rootflags=nofail to bypass sysroot failure, which blocking
> initrd-root-fs.target.
> 
> Please put your comments. Thanks!
> 
>  src/fstab-generator/fstab-generator.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
> index c17299f..87b17cd 100644
> --- a/src/fstab-generator/fstab-generator.c
> +++ b/src/fstab-generator/fstab-generator.c
> @@ -492,6 +492,7 @@ static int parse_new_root_from_proc_cmdline(void) {
>          char *w, *state;
>          int r;
>          size_t l;
> +        bool noauto, nofail;
>  
>          r = read_one_line_file("/proc/cmdline", &line);
>          if (r < 0) {
> @@ -547,6 +548,9 @@ static int parse_new_root_from_proc_cmdline(void) {
>                  }
>          }
>  
> +        noauto = !!strstr(opts, "noauto");
> +        nofail = !!strstr(opts, "nofail");
> +
>          if (!what) {
>                  log_debug("Could not find a root= entry on the kernel commandline.");
>                  return 0;
> @@ -558,7 +562,7 @@ static int parse_new_root_from_proc_cmdline(void) {
>          }
>  
>          log_debug("Found entry what=%s where=/sysroot type=%s", what, type);
> -        r = add_mount(what, "/sysroot", type, opts, 0, false, false, false,
> +        r = add_mount(what, "/sysroot", type, opts, 0, noauto, nofail, false,
>                        false, NULL, NULL, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline");
>  
>          return (r < 0) ? r : 0;
> -- 
> 1.8.3.1


More information about the systemd-devel mailing list