[systemd-devel] [PATCH 1/2] nspawn: only mount the cgroup root if it's not already mounted
Lennart Poettering
lennart at poettering.net
Wed May 13 03:45:39 PDT 2015
On Wed, 13.05.15 11:15, Iago López Galeiras (iago at endocode.com) wrote:
> This allows the user to set the cgroups manually before calling
> nspawn.
I think it would be better to simply move mounting of /sys/fs/cgroup
into the array at the top of mount_all(), which already does this
path_is_mount_point() checking...
> ---
> src/nspawn/nspawn.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
> index 2f7dd53..c67cab2 100644
> --- a/src/nspawn/nspawn.c
> +++ b/src/nspawn/nspawn.c
> @@ -1053,6 +1053,21 @@ static int mount_cgroup_hierarchy(const char *dest, const char *controller, cons
> return 1;
> }
>
> +static int mount_cgroup_tmpfs(const char *cgroup_root) {
> + int r;
> +
> + r = path_is_mount_point(cgroup_root, false);
> + if (r < 0 && r != -ENOENT)
> + return log_error_errno(r, "Failed to determine if %s is mounted already: %m", cgroup_root);
> + if (r > 0)
> + return 0;
> +
> + if (mount("tmpfs", cgroup_root, "tmpfs", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, "mode=755") < 0)
> + return log_error_errno(errno, "Failed to mount tmpfs to /sys/fs/cgroup: %m");
> +
> + return 1;
> +}
> +
> static int mount_cgroup(const char *dest) {
> _cleanup_set_free_free_ Set *controllers = NULL;
> _cleanup_free_ char *own_cgroup_path = NULL;
> @@ -1072,8 +1087,9 @@ static int mount_cgroup(const char *dest) {
> return log_error_errno(r, "Failed to determine our own cgroup path: %m");
>
> cgroup_root = strjoina(dest, "/sys/fs/cgroup");
> - if (mount("tmpfs", cgroup_root, "tmpfs", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, "mode=755") < 0)
> - return log_error_errno(errno, "Failed to mount tmpfs to /sys/fs/cgroup: %m");
> + r = mount_cgroup_tmpfs(cgroup_root);
> + if (r < 0)
> + return r;
>
> for (;;) {
> _cleanup_free_ char *controller = NULL, *origin = NULL, *combined = NULL;
> --
> 2.4.0
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list