[CRIU] [PATCH] cgroups: don't take into account a leading / for the "/" parent

Pavel Emelyanov xemul at parallels.com
Mon Aug 25 05:09:05 PDT 2014


On 08/25/2014 04:06 PM, Andrew Vagin wrote:
> Without this patch, we dump somethin like this:
> {
> 	cnames: "hugetlb"
> 	dirs: 	{
> 		dir_name: ""
> 		children: 		{
> 			dir_name: "ewroot"
> 			children: <empty>
> 			properties: <empty>
> 		}
> 
> 		properties: <empty>
> 	}
> 
> }
> 
> it's obvious, that dir_name should be newroot. I can't check this patch,
> because cgroups02 doesn't work. 

What's your kernel version? On my 3.15 it works OK.

> Tycho, could you look at this?
> 
> [root at jenkins workspace]# bash test/zdtm.sh static/cgroup02
> Execute zdtm/live/static/cgroup02
> ./cgroup02 --pidfile=cgroup02.pid --outfile=cgroup02.out --dirname=cgroup02.test
> Dump 21776
> Executing pre-restore hook
> Cleaning cgclean.RRZfsP
> rmdir: failed to remove ‘cgclean.RRZfsP/newroot’: No such file or directory
> rmdir: failed to remove ‘cgclean.RRZfsP/zdtmtstroot’: No such file or directory
> Left there is:
> cgroup.clone_children  cgroup.procs  cgroup.sane_behavior  notify_on_release  release_agent  tasks
> Cleaning cgclean.naxRMr
> rmdir: failed to remove ‘cgclean.naxRMr/newroot’: No such file or directory
> rmdir: failed to remove ‘cgclean.naxRMr/zdtmtstroot’: No such file or directory
> Left there is:
> cgroup.clone_children  cgroup.procs  cgroup.sane_behavior  notify_on_release  release_agent  tasks
> Restore
> Test: zdtm/live/static/cgroup02, Result: FAIL
> ==================================== ERROR ====================================
> Test: zdtm/live/static/cgroup02, Namespace:
> Dump log   : /var/lib/jenkins/jobs/CRIU/workspace/test/dump/static/cgroup02/21776/1/dump.log
> --------------------------------- grep Error ---------------------------------
> ------------------------------------- END -------------------------------------
> Restore log: /var/lib/jenkins/jobs/CRIU/workspace/test/dump/static/cgroup02/21776/1/restore.log
> --------------------------------- grep Error ---------------------------------
> (00.022961)  21776: Error (cgroup.c:958): cg: Can't move into defaultroot//oldroot/tasks (-1/-1): No such file or directory
> (00.023181) Error (cr-restore.c:1152): 21776 exited, status=255
> (00.023202) Error (cr-restore.c:1762): Restoring FAILED.
> ------------------------------------- END -------------------------------------
> ================================= ERROR OVER =================================
> 
> Cc: Tycho Andersen <tycho.andersen at canonical.com>
> Signed-off-by: Andrew Vagin <avagin at openvz.org>
> ---
>  cgroup.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/cgroup.c b/cgroup.c
> index d4b71a3..bf22998 100644
> --- a/cgroup.c
> +++ b/cgroup.c
> @@ -676,7 +676,9 @@ static int dump_cg_dirs(struct list_head *dirs, size_t n_dirs, CgroupDirEntry **
>  
>  	list_for_each_entry(cur, dirs, siblings) {
>  		cgroup_dir_entry__init(cde);
> -		cde->dir_name = cur->path + poff + 1 /* leading / */;
> +		cde->dir_name = cur->path + poff;
> +		if (poff > 1) /* parent isn't "/" */
> +			cde->dir_name++; /* leading / */
>  		cde->n_children = cur->n_children;
>  		if (cur->n_children > 0)
>  			if (dump_cg_dirs(&cur->children, cur->n_children, &cde->children, strlen(cur->path)) < 0) {
> 



More information about the CRIU mailing list