[CRIU] [PATCH] cg: don't try to copy special props to cpuset:/
Pavel Emelyanov
xemul at parallels.com
Fri Oct 3 01:47:39 PDT 2014
On 10/03/2014 03:40 AM, Tycho Andersen wrote:
> We can't write to cpuset's root cg (indeed, we didn't create it and it has
> stuff in it), so ignore this special case.
Wait a second. I though we should avoid writing the "special props"
to all directories that we did *not* created on restore. Is this
assumption correct?
> Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
> ---
> cgroup.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/cgroup.c b/cgroup.c
> index 29e373d..36e3487 100644
> --- a/cgroup.c
> +++ b/cgroup.c
> @@ -886,7 +886,7 @@ static int find_value(const char *controller, const char *path, const char *prop
> *pos = 0;
> snprintf(prefix, PATH_MAX, "%s/%s", controller, my_path);
> } else {
> - snprintf(fpath, PATH_MAX, "%s", controller);
> + snprintf(prefix, PATH_MAX, "%s", controller);
> }
> snprintf(fpath, PATH_MAX, "%s/%s", prefix, prop);
>
> @@ -964,6 +964,17 @@ static int copy_special_cg_props(const char *controller, char *path)
> if (find_value(controller, path, prop, buf, prefix, missing_path) < 0)
> return -1;
>
> + /*
> + * If the path that was missing is "/", we should skip
> + * copying this property, since cpuset won't allow us
> + * to write to it because there are already processes
> + * there (e.g. init). The root cg had no restrictions
> + * on cpuset resources here, so ignoring this and
> + * writing nothing is safe.
> + */
> + if (strcmp(missing_path, "/") == 0)
> + continue;
> +
> if (copy_recursive(prefix, missing_path, prop, buf) < 0) {
> pr_err("copying prop %s failed\n", prop);
> return -1;
>
More information about the CRIU
mailing list