Quoting Tycho Andersen (tycho.ander...@canonical.com): > Instead, the parent always writes a status to the pipe. > > Signed-off-by: Tycho Andersen <tycho.ander...@canonical.com>
Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > --- > src/lxc/lxccontainer.c | 21 ++++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c > index b310a0f..88cdf55 100644 > --- a/src/lxc/lxccontainer.c > +++ b/src/lxc/lxccontainer.c > @@ -3926,13 +3926,14 @@ static void do_restore(struct lxc_container *c, int > pipe, char *directory, bool > pid_t pid; > char pidfile[L_tmpnam]; > struct lxc_handler *handler; > + int status; > > if (!tmpnam(pidfile)) > - exit(1); > + goto out; > > handler = lxc_init(c->name, c->lxc_conf, c->config_path); > if (!handler) > - exit(1); > + goto out; > > if (!cgroup_init(handler)) { > ERROR("failed initing cgroups"); > @@ -3957,6 +3958,9 @@ static void do_restore(struct lxc_container *c, int > pipe, char *directory, bool > struct criu_opts os; > struct lxc_rootfs *rootfs; > > + close(pipe); > + pipe = -1; > + > if (unshare(CLONE_NEWNS)) > goto out_fini_handler; > > @@ -3994,7 +3998,7 @@ static void do_restore(struct lxc_container *c, int > pipe, char *directory, bool > rmdir(rootfs->mount); > goto out_fini_handler; > } else { > - int status, ret; > + int ret; > char title[2048]; > > pid_t w = waitpid(pid, &status, 0); > @@ -4005,6 +4009,7 @@ static void do_restore(struct lxc_container *c, int > pipe, char *directory, bool > > ret = write(pipe, &status, sizeof(status)); > close(pipe); > + pipe = -1; > > if (sizeof(status) != ret) { > perror("write"); > @@ -4056,6 +4061,16 @@ static void do_restore(struct lxc_container *c, int > pipe, char *directory, bool > > out_fini_handler: > lxc_fini(c->name, handler); > + > +out: > + if (pipe >= 0) { > + status = 1; > + if (write(pipe, &status, sizeof(status)) != sizeof(status)) { > + SYSERROR("writing status failed"); > + } > + close(pipe); > + } > + > exit(1); > } > > -- > 2.1.4 > > _______________________________________________ > lxc-devel mailing list > lxc-devel@lists.linuxcontainers.org > http://lists.linuxcontainers.org/listinfo/lxc-devel _______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel