[lxc-devel] [lxc/master] Create console when the rootfs is NULL

lifeng68 on Github lxc-bot at linuxcontainers.org
Thu Jan 18 10:11:42 UTC 2018


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 712 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180118/df531b34/attachment.bin>
-------------- next part --------------
From 7bc5a80badf339ccc14d6bfaa0ab666181f4696e Mon Sep 17 00:00:00 2001
From: LiFeng <lifeng68 at huawei.com>
Date: Thu, 18 Jan 2018 17:26:11 -0500
Subject: [PATCH] Create console when the rootfs is NULL

Signed-off-by: LiFeng <lifeng68 at huawei.com>
---
 src/lxc/console.c |  6 ------
 src/lxc/start.c   | 44 +++++++++++++++++---------------------------
 2 files changed, 17 insertions(+), 33 deletions(-)

diff --git a/src/lxc/console.c b/src/lxc/console.c
index f875f8461..d613d7987 100644
--- a/src/lxc/console.c
+++ b/src/lxc/console.c
@@ -747,12 +747,6 @@ int lxc_console_create(struct lxc_conf *conf)
 	int ret;
 	struct lxc_console *console = &conf->console;
 
-	if (!conf->rootfs.path) {
-		INFO("Container does not have a rootfs. The console will be "
-		     "shared with the host");
-		return 0;
-	}
-
 	if (console->path && !strcmp(console->path, "none")) {
 		INFO("No console was requested");
 		return 0;
diff --git a/src/lxc/start.c b/src/lxc/start.c
index 89a194fd1..97e3231f1 100644
--- a/src/lxc/start.c
+++ b/src/lxc/start.c
@@ -472,7 +472,7 @@ int lxc_set_state(const char *name, struct lxc_handler *handler,
 int lxc_poll(const char *name, struct lxc_handler *handler)
 {
 	int ret;
-	bool has_console = (handler->conf->rootfs.path != NULL);
+	struct lxc_console *console = &handler->conf->console;
 	struct lxc_epoll_descr descr, descr_console;
 
 	ret = lxc_mainloop_open(&descr);
@@ -481,12 +481,10 @@ int lxc_poll(const char *name, struct lxc_handler *handler)
 		goto out_sigfd;
 	}
 
-	if (has_console) {
-		ret = lxc_mainloop_open(&descr_console);
-		if (ret < 0) {
-			ERROR("Failed to create console mainloop");
-			goto out_mainloop;
-		}
+	ret = lxc_mainloop_open(&descr_console);
+	if (ret < 0) {
+		ERROR("Failed to create console mainloop");
+		goto out_mainloop;
 	}
 
 	ret = lxc_mainloop_add_handler(&descr, handler->sigfd, signal_handler, handler);
@@ -495,20 +493,16 @@ int lxc_poll(const char *name, struct lxc_handler *handler)
 		goto out_mainloop_console;
 	}
 
-	if (has_console) {
-		struct lxc_console *console = &handler->conf->console;
-
-		ret = lxc_console_mainloop_add(&descr, console);
-		if (ret < 0) {
-			ERROR("Failed to add console handlers to mainloop");
-			goto out_mainloop_console;
-		}
+	ret = lxc_console_mainloop_add(&descr, console);
+	if (ret < 0) {
+		ERROR("Failed to add console handlers to mainloop");
+		goto out_mainloop_console;
+	}
 
-		ret = lxc_console_mainloop_add(&descr_console, console);
-		if (ret < 0) {
-			ERROR("Failed to add console handlers to console mainloop");
-			goto out_mainloop_console;
-		}
+	ret = lxc_console_mainloop_add(&descr_console, console);
+	if (ret < 0) {
+		ERROR("Failed to add console handlers to console mainloop");
+		goto out_mainloop_console;
 	}
 
 	ret = lxc_cmd_mainloop_add(name, &descr, handler);
@@ -525,19 +519,15 @@ int lxc_poll(const char *name, struct lxc_handler *handler)
 	if (ret < 0 || !handler->init_died)
 		goto out_mainloop;
 
-	if (has_console)
-		ret = lxc_mainloop(&descr_console, 0);
-
+	ret = lxc_mainloop(&descr_console, 0);
 
 out_mainloop:
 	lxc_mainloop_close(&descr);
 	TRACE("Closed mainloop");
 
 out_mainloop_console:
-	if (has_console) {
-		lxc_mainloop_close(&descr_console);
-		TRACE("Closed console mainloop");
-	}
+	lxc_mainloop_close(&descr_console);
+	TRACE("Closed console mainloop");
 
 out_sigfd:
 	close(handler->sigfd);


More information about the lxc-devel mailing list