Re: [lxc-devel] [PATCH 2/3] lxc-start: store PID file to lxc_container
Quoting Qiang Huang (h.huangqi...@huawei.com): So we can remove PID file untill lxc_container_free. This also fix bug: https://github.com/lxc/lxc/issues/89 Signed-off-by: Qiang Huang h.huangqi...@huawei.com Acked-by: Serge E. Hallyn serge.hal...@ubuntu.com --- src/lxc/lxc_start.c| 9 + src/lxc/lxccontainer.c | 7 +++ src/lxc/lxccontainer.h | 6 ++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index d5379da..fd2dc6e 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -302,6 +302,11 @@ int main(int argc, char *argv[]) } if (my_args.pidfile != NULL) { + if (ensure_path(c-pidfile, my_args.pidfile) 0) { + ERROR(failed to ensure pidfile '%s', my_args.pidfile); + goto out; + } + pid_fp = fopen(my_args.pidfile, w); if (pid_fp == NULL) { SYSERROR(failed to create pidfile '%s' for '%s', @@ -342,10 +347,6 @@ int main(int argc, char *argv[]) c-want_close_all_fds(c, true); err = c-start(c, 0, args) ? 0 : -1; - - if (my_args.pidfile) - unlink(my_args.pidfile); - out: lxc_container_put(c); if (pid_fp) diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index d020918..579c50c 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -237,6 +237,12 @@ static void lxc_container_free(struct lxc_container *c) free(c-config_path); c-config_path = NULL; } + if (c-pidfile) { + unlink(c-pidfile); + free(c-pidfile); + c-pidfile = NULL; + } + free(c); } @@ -3121,6 +3127,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath lxcapi_clear_config(c); } c-daemonize = true; + c-pidfile = NULL; // assign the member functions c-is_defined = lxcapi_is_defined; diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h index f3c7d72..84caa31 100644 --- a/src/lxc/lxccontainer.h +++ b/src/lxc/lxccontainer.h @@ -68,6 +68,12 @@ struct lxc_container { /*! * \private + * File to store pid. + */ + char *pidfile; + + /*! + * \private * Container semaphore lock. */ struct lxc_lock *slock; -- 1.8.3 ___ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel
[lxc-devel] [PATCH 2/3] lxc-start: store PID file to lxc_container
So we can remove PID file untill lxc_container_free. This also fix bug: https://github.com/lxc/lxc/issues/89 Signed-off-by: Qiang Huang h.huangqi...@huawei.com --- src/lxc/lxc_start.c| 9 + src/lxc/lxccontainer.c | 7 +++ src/lxc/lxccontainer.h | 6 ++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index d5379da..fd2dc6e 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -302,6 +302,11 @@ int main(int argc, char *argv[]) } if (my_args.pidfile != NULL) { + if (ensure_path(c-pidfile, my_args.pidfile) 0) { + ERROR(failed to ensure pidfile '%s', my_args.pidfile); + goto out; + } + pid_fp = fopen(my_args.pidfile, w); if (pid_fp == NULL) { SYSERROR(failed to create pidfile '%s' for '%s', @@ -342,10 +347,6 @@ int main(int argc, char *argv[]) c-want_close_all_fds(c, true); err = c-start(c, 0, args) ? 0 : -1; - - if (my_args.pidfile) - unlink(my_args.pidfile); - out: lxc_container_put(c); if (pid_fp) diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index d020918..579c50c 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -237,6 +237,12 @@ static void lxc_container_free(struct lxc_container *c) free(c-config_path); c-config_path = NULL; } + if (c-pidfile) { + unlink(c-pidfile); + free(c-pidfile); + c-pidfile = NULL; + } + free(c); } @@ -3121,6 +3127,7 @@ struct lxc_container *lxc_container_new(const char *name, const char *configpath lxcapi_clear_config(c); } c-daemonize = true; + c-pidfile = NULL; // assign the member functions c-is_defined = lxcapi_is_defined; diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h index f3c7d72..84caa31 100644 --- a/src/lxc/lxccontainer.h +++ b/src/lxc/lxccontainer.h @@ -68,6 +68,12 @@ struct lxc_container { /*! * \private +* File to store pid. +*/ + char *pidfile; + + /*! +* \private * Container semaphore lock. */ struct lxc_lock *slock; -- 1.8.3 ___ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel