[lxc-devel] [PATCH] make the container exit code propagate to lxc-start exit code when appropriate

Rodrigo Vaz rodrigo at heroku.com
Thu Jul 3 18:39:51 UTC 2014


Alright, indeed interesting, I've dropped exit_value and used the error_num
instead. V3 is much simpler.

Thanks Serge.

Signed-off-by: Rodrigo Sampaio Vaz <rodrigo at heroku.com>
---

diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
index 1d8145f..03ce079 100644
--- a/src/lxc/lxc_start.c
+++ b/src/lxc/lxc_start.c
@@ -336,6 +336,9 @@ int main(int argc, char *argv[])
  ERROR("To get more details, run the container in foreground mode.");
  ERROR("Additional information can be obtained by setting the "
       "--logfile and --log-priority options.");
+        err = c->error_num;
+        lxc_container_put(c);
+        return err;
  }

 out:
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index 62e38d7..e2a7a68 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -669,6 +669,7 @@ static bool lxcapi_start(struct lxc_container *c, int
useinit, char * const argv
 reboot:
  conf->reboot = 0;
  ret = lxc_start(c->name, argv, conf, c->config_path);
+    c->error_num = ret;

  if (conf->reboot) {
  INFO("container requested reboot");

---


On Thu, Jul 3, 2014 at 3:21 PM, Serge Hallyn <serge.hallyn at ubuntu.com>
wrote:

> Quoting Rodrigo Vaz (rodrigo at heroku.com):
> > Hi Serge,
> >
> > Thanks for the comment and it makes a lot of sense, here is the V2 patch.
>
> Thanks, just one more comment,
>
> > Signed-off-by: Rodrigo Sampaio Vaz <rodrigo at heroku.com>
> > ---
> >  src/lxc/lxc_start.c    | 2 ++
> >  src/lxc/lxccontainer.c | 1 +
> >  src/lxc/lxccontainer.h | 3 +++
> >  3 files changed, 6 insertions(+)
> >
> > diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
> > index 1d8145f..6212422 100644
> > --- a/src/lxc/lxc_start.c
> > +++ b/src/lxc/lxc_start.c
> > @@ -336,6 +336,8 @@ int main(int argc, char *argv[])
> >   ERROR("To get more details, run the container in foreground mode.");
> >   ERROR("Additional information can be obtained by setting the "
> >        "--logfile and --log-priority options.");
> > +        lxc_container_put(c);
> > +        return c->exit_value;
>
> You should grab the error value before doing the lxc_container_put().
> So perhaps
>
>         err = c->exit_value;
>         lxc_container_put(c);
>         return err;
>
> >   }
> >
> >  out:
> > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
> > index 62e38d7..cb26fff 100644
> > --- a/src/lxc/lxccontainer.c
> > +++ b/src/lxc/lxccontainer.c
> > @@ -669,6 +669,7 @@ static bool lxcapi_start(struct lxc_container *c, int
> > useinit, char * const argv
> >  reboot:
> >   conf->reboot = 0;
> >   ret = lxc_start(c->name, argv, conf, c->config_path);
> > +    c->exit_value = ret;
> >
> >   if (conf->reboot) {
> >   INFO("container requested reboot");
> > diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h
> > index 1d0628a..0fb8eb1 100644
> > --- a/src/lxc/lxccontainer.h
> > +++ b/src/lxc/lxccontainer.h
> > @@ -106,6 +106,9 @@ struct lxc_container {
> >   /*! Last error number */
> >   int error_num;
>
> (Hm, this is intersting, error_num shows up nowhere else in the source.)
>
> >
> > +    /*! Container exit code */
> > +    int exit_value;
> > +
> >   /*! Whether container wishes to be daemonized */
> >   bool daemonize;
> >
> > --
> > 2.0.1
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20140703/7c5bd476/attachment-0001.html>


More information about the lxc-devel mailing list