On Fri, Nov 06, 2015 at 05:26:43PM -0700, Tycho Andersen wrote: > Instead of relying on the old ptrace loop, we should instead put all the > tasks in the container into the freezer. This will stop them all at the > same time, preventing fork bombs from causing criu to infinite loop (and is > also simply a lot faster). > > Note that this uses --freeze-cgroup which isn't in criu 1.7, so it should > only go into master. > > Signed-off-by: Tycho Andersen <tycho.ander...@canonical.com>
Acked-by: Stéphane Graber <stgra...@ubuntu.com> > --- > src/lxc/criu.c | 24 +++++++++++++++++++++--- > 1 file changed, 21 insertions(+), 3 deletions(-) > > diff --git a/src/lxc/criu.c b/src/lxc/criu.c > index 7ee6cbe..695a763 100644 > --- a/src/lxc/criu.c > +++ b/src/lxc/criu.c > @@ -37,6 +37,7 @@ > #include "bdev.h" > #include "cgroup.h" > #include "conf.h" > +#include "commands.h" > #include "criu.h" > #include "log.h" > #include "lxc.h" > @@ -64,8 +65,8 @@ void exec_criu(struct criu_opts *opts) > * +1 for final NULL */ > > if (strcmp(opts->action, "dump") == 0) { > - /* -t pid */ > - static_args += 2; > + /* -t pid --freeze-cgroup /lxc/ct */ > + static_args += 4; > > /* --leave-running */ > if (!opts->stop) > @@ -133,13 +134,30 @@ void exec_criu(struct criu_opts *opts) > DECLARE_ARG("-vvvvvv"); > > if (strcmp(opts->action, "dump") == 0) { > - char pid[32]; > + char pid[32], *freezer_relative; > > if (sprintf(pid, "%d", opts->c->init_pid(opts->c)) < 0) > goto err; > > + > DECLARE_ARG("-t"); > DECLARE_ARG(pid); > + > + freezer_relative = lxc_cmd_get_cgroup_path(opts->c->name, > + opts->c->config_path, > + "freezer"); > + if (!freezer_relative) { > + ERROR("failed getting freezer path"); > + goto err; > + } > + > + ret = snprintf(log, sizeof(log), "/sys/fs/cgroup/freezer/%s", > freezer_relative); > + if (ret < 0 || ret >= sizeof(log)) > + goto err; > + > + DECLARE_ARG("--freeze-cgroup"); > + DECLARE_ARG(log); > + > if (!opts->stop) > DECLARE_ARG("--leave-running"); > } else if (strcmp(opts->action, "restore") == 0) { > -- > 2.6.2 > > _______________________________________________ > lxc-devel mailing list > lxc-devel@lists.linuxcontainers.org > http://lists.linuxcontainers.org/listinfo/lxc-devel -- Stéphane Graber Ubuntu developer http://www.ubuntu.com
signature.asc
Description: Digital signature
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel