On Sat, Apr 04, 2015 at 01:53:24AM +0000, Serge Hallyn wrote: > 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>
This patch won't apply to current master, can you send a rebase version? > > > --- > > 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 -- 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