return -1;
}
-static void exec_criu(struct cgroup_ops *cgroup_ops, struct criu_opts *opts)
+static void exec_criu(struct cgroup_ops *cgroup_ops, struct lxc_conf *conf,
+ struct criu_opts *opts)
{
char **argv, log[PATH_MAX];
int static_args = 23, argc = 0, i, ret;
* /actual/ root cgroup so that lxcfs thinks criu has enough rights to
* see all cgroups.
*/
- if (!cgroup_ops->escape(cgroup_ops, opts->handler->conf)) {
+ if (!cgroup_ops->escape(cgroup_ops, conf)) {
ERROR("failed to escape cgroups");
return;
}
os.console_name = c->lxc_conf->console.name;
/* exec_criu() returning is an error */
- exec_criu(cgroup_ops, &os);
+ exec_criu(cgroup_ops, c->lxc_conf, &os);
umount(rootfs->mount);
rmdir(rootfs->mount);
goto out_fini_handler;
if (pid == 0) {
struct criu_opts os;
- struct lxc_handler h;
struct cgroup_ops *cgroup_ops;
close(criuout[0]);
- lxc_zero_handler(&h);
-
- h.name = c->name;
-
cgroup_ops = cgroup_init(c->lxc_conf);
if (!cgroup_ops) {
ERROR("failed to cgroup_init()");
_exit(EXIT_FAILURE);
return -1;
}
- h.cgroup_ops = cgroup_ops;
os.pipefd = criuout[1];
os.action = mode;
os.c = c;
os.console_name = c->lxc_conf->console.path;
os.criu_version = criu_version;
+ os.handler = NULL;
ret = save_tty_major_minor(opts->directory, c, os.tty_id, sizeof(os.tty_id));
if (ret < 0) {
}
/* exec_criu() returning is an error */
- exec_criu(cgroup_ops, &os);
+ exec_criu(cgroup_ops, c->lxc_conf, &os);
free(criu_version);
_exit(EXIT_FAILURE);
} else {