I am not too sure, but if user wants to stop a container is there a
reason not to implicitly unfreeze the container and stop ?

---
From: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com>
Date: Tue, 8 Jun 2010 18:42:00 -0700
Subject: [PATCH 1/1]: unfreeze while stopping container

When a container is being stopped, it must also be unfrozen after posting
the SIGKILL. Otherwise if the container is frozen when the SIGKILL is posted,
the SIGKILL will remain pending and the lxc-stop command will block until
lxc-unfreeze is explicitly called).

(lxc-stop waits for the container to exit and close the socket but since
the container is frozen, lxc-stop will block).

[Dan Smith pointed this out while testing out-of-tree lxc-checkpoint/restart]

Signed-off-by: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com>
---
 src/lxc/stop.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/lxc/stop.c b/src/lxc/stop.c
index b751af5..f441e46 100644
--- a/src/lxc/stop.c
+++ b/src/lxc/stop.c
@@ -83,8 +83,14 @@ extern int lxc_stop_callback(int fd, struct lxc_request 
*request,
        int ret;
 
        answer.ret = kill(handler->pid, SIGKILL);
-       if (!answer.ret)
-               return 0;
+       if (!answer.ret) {
+               ret = lxc_unfreeze(handler->name);
+               if (!ret)
+                       return 0;
+
+               ERROR("failed to unfreeze container");
+               answer.ret = ret;
+       }
 
        ret = send(fd, &answer, sizeof(answer), 0);
        if (ret < 0) {
-- 
1.6.6.1


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to