[lxc-devel] [PATCH 2/2] Must unfreeze while stopping container

Sukadev Bhattiprolu sukadev at linux.vnet.ibm.com
Sat Jul 10 02:52:22 UTC 2010


From: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Subject: [PATCH 2/2] Must unfreeze while stopping container

As pointed out by Dan Smith, 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).

Signed-off-by: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Acked-by: Matt Helsley <matthltc at us.ibm.com>
Acked-by: Dan Smith <danms at us.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.0.4





More information about the lxc-devel mailing list