Re: [lxc-devel] [PATCH 2/3] lxc-start: store PID file to lxc_container

2014-01-22 Thread Serge Hallyn
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

2014-01-21 Thread Qiang Huang
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