[systemd-devel] [PATCH 1/2] fstab-generator: Support root on tmpfs (or other deviceless FS)

Vasiliy Tolstov v.tolstov at selfip.ru
Tue Mar 24 09:04:55 PDT 2015


For overlayfs you need to check overlayfs and overlay.
24 марта 2015 г. 1:52 пользователь "Tobias Hunger" <tobias.hunger at gmail.com>
написал:

> This allows for stateless systems.
> ---
>  src/fstab-generator/fstab-generator.c | 21 +++++++++++++--------
>  src/shared/util.c                     | 30 ++++++++++++++++++++++++++++++
>  src/shared/util.h                     |  1 +
>  3 files changed, 44 insertions(+), 8 deletions(-)
>
> diff --git a/src/fstab-generator/fstab-generator.c
> b/src/fstab-generator/fstab-generator.c
> index 2ece12f..77c97fd 100644
> --- a/src/fstab-generator/fstab-generator.c
> +++ b/src/fstab-generator/fstab-generator.c
> @@ -397,15 +397,20 @@ static int add_root_mount(void) {
>          _cleanup_free_ char *what = NULL;
>          const char *opts;
>
> -        if (isempty(arg_root_what)) {
> -                log_debug("Could not find a root= entry on the kernel
> command line.");
> -                return 0;
> -        }
> +        if (fstype_is_deviceless(arg_root_fstype)) {
> +                if (free_and_strdup(&what, arg_root_what) < 0)
> +                        return log_oom();
> +        } else {
> +                if (isempty(arg_root_what)) {
> +                        log_debug("Could not find a root= entry on the
> kernel command line.");
> +                        return 0;
> +                }
>
> -        what = fstab_node_to_udev_node(arg_root_what);
> -        if (!path_is_absolute(what)) {
> -                log_debug("Skipping entry what=%s where=/sysroot
> type=%s", what, strna(arg_root_fstype));
> -                return 0;
> +                what = fstab_node_to_udev_node(arg_root_what);
> +                if (!path_is_absolute(what)) {
> +                        log_debug("Skipping entry what=%s where=/sysroot
> type=%s", what, strna(arg_root_fstype));
> +                        return 0;
> +                }
>          }
>
>          if (!arg_root_options)
> diff --git a/src/shared/util.c b/src/shared/util.c
> index ad548da..cb03527 100644
> --- a/src/shared/util.c
> +++ b/src/shared/util.c
> @@ -1713,6 +1713,36 @@ bool fstype_is_network(const char *fstype) {
>          return nulstr_contains(table, fstype);
>  }
>
> +bool fstype_is_deviceless(const char *fstype) {
> +        static const char table[] =
> +                "autofs\0"
> +                "bdev\0"
> +                "cgroup\0"
> +                "configfs\0"
> +                "cpuset\0"
> +                "debugfs\0"
> +                "devpts\0"
> +                "devtmpfs\0"
> +                "efivarfs\0"
> +                "hugetlbfs\0"
> +                "mqueue\0"
> +                "nfs\0"
> +                "nfs4\0"
> +                "overlayfs\0"
> +                "pipefs\0"
> +                "proc\0"
> +                "pstore\0"
> +                "ramfs\0"
> +                "rootfs\0"
> +                "rpc_pipefs\0"
> +                "securityfs\0"
> +                "sockfs\0"
> +                "sysfs\0"
> +                "tmpfs\0";
> +
> +        return nulstr_contains(table, fstype);
> +}
> +
>  int chvt(int vt) {
>          _cleanup_close_ int fd;
>
> diff --git a/src/shared/util.h b/src/shared/util.h
> index 29e85bb..b5f44b8 100644
> --- a/src/shared/util.h
> +++ b/src/shared/util.h
> @@ -409,6 +409,7 @@ int fd_cloexec(int fd, bool cloexec);
>  int close_all_fds(const int except[], unsigned n_except);
>
>  bool fstype_is_network(const char *fstype);
> +bool fstype_is_deviceless(const char *fstype);
>
>  int chvt(int vt);
>
> --
> 2.3.3
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20150324/7671c2c8/attachment.html>


More information about the systemd-devel mailing list