[CRIU] [PATCH] Skip restoring the cgroup root directories when using full mode

Hui Kang hkang.sunysb at gmail.com
Thu Aug 13 08:18:19 PDT 2015


On Thu, Aug 13, 2015 at 11:11 AM, Pavel Emelyanov <xemul at parallels.com>
wrote:

> On 08/13/2015 05:08 PM, Hui Kang wrote:
> > Hi, Cyrill
> > To provide more information about this patch.
> >
> > From the cgroup.c, I see that if the restoring stratgy is full, it will
> always restore all the cgroup properties, which includes
> /sys/fs/cgroup/cpusets.cpu. As that file is not write-able by criu (i.e.,
> echo "1024" > /sys/fs/cgroup/cpusets.cpu fails), it will cause problem.
> >
> > In contrast, when restoring with "soft" mode, the e->n_properties is
> zero so that restore_cgroup_prop() is not called.
> >
> > - Hui
> >
> > On Wed, Aug 12, 2015 at 6:00 PM, Cyrill Gorcunov <gorcunov at gmail.com
> <mailto:gorcunov at gmail.com>> wrote:
> >
> >     On Wed, Aug 12, 2015 at 05:37:35PM -0400, Hui Kang wrote:
> >     >
> >     >      Could you please explain how we end up having empty dir_name
> here?
> >     >
> >     >    This happens when restoring a process with cgroup using
> >     >    --manage-cgroup=full.
> >     >    To reproduce this error
> >     >    1. start a process
> >     >    2. mkdir /sys/fs/cgroups/cpusets/foo
> >     >    3. echo PID > /sys/fs/cgroups/cpusets/foo/tasks
> >     >    4. checkpoint the process
> >     >    5. rmdir /sys/fs/cgroups/cpusets/foo or copy the checkedpoint
> images to a
> >     >    different host
> >     >    5. /root/criu/criu restore --log-file ./restore.log -vvvv -j
> >     >    --manage-cgroup=full
> >
> >     Hmm. Thanks for info! Need to think...
>
> I think I've got the point. Cpuset's top cgroups is not writable at all.
> Look at
> the kernel's update_cpumask() from kernel/cpuset.c file:
>
> static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
>                           const char *buf)
> {
>         int retval;
>
>         /* top_cpuset.cpus_allowed tracks cpu_online_mask; it's read-only
> */
>         if (cs == &top_cpuset)
>                 return -EACCES;
>
>
> See? Thus patch makes sense to me with two ... fixlets -- this exception
> should be
> applied only to the cpuset controller and to the
> restore_special_cpuset_props() too.
>

Pavel,
Thanks for dig into the level that explains this. I will submit another
patch with the two fixlets

- Hui


>
> -- Pavel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvz.org/pipermail/criu/attachments/20150813/d0410c35/attachment.html>


More information about the CRIU mailing list