[lxc-users] [PATCH] check whether rootfs is shared before running pre-mount hooks

Florian Klink flokli at flokli.de
Thu Mar 27 15:50:17 UTC 2014


this expands c597baa8f9 and 2c6f3fc932.

Also move the block using detect_ramfs_rootfs() from setup_rootfs() to
lxc_setup()

Signed-off-by: Florian Klink <flokli at flokli.de>
---
 src/lxc/conf.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index a9d64ba..e34e034 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -1506,18 +1506,6 @@ static int setup_rootfs(struct lxc_conf *conf)
 		return -1;
 	}
 
-       if (detect_ramfs_rootfs()) {
-		if (chroot_into_slave(conf)) {
-			ERROR("Failed to chroot into slave /");
-			return -1;
-		}
-       } else if (detect_shared_rootfs()) {
-               if (mount("", "/", NULL, MS_SLAVE|MS_REC, 0)) {
-                       SYSERROR("Failed to make / rslave");
-                       return -1;
-               }
-	}
-
 	// First try mounting rootfs using a bdev
 	struct bdev *bdev = bdev_init(rootfs->path, rootfs->mount, rootfs->options);
 	if (bdev && bdev->ops->mount(bdev) == 0) {
@@ -3712,6 +3700,19 @@ int lxc_setup(struct lxc_handler *handler)
 	const char *lxcpath = handler->lxcpath;
 	void *data = handler->data;
 
+	if (detect_shared_rootfs()) {
+		if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL)) {
+			SYSERROR("Failed to make / rslave");
+			ERROR("Continuing...");
+		}
+	}
+	if (detect_ramfs_rootfs()) {
+		if (chroot_into_slave(lxc_conf)) {
+			ERROR("Failed to chroot into slave /");
+			return -1;
+		}
+	}
+
 	if (lxc_conf->inherit_ns_fd[LXC_NS_UTS] == -1) {
 		if (setup_utsname(lxc_conf->utsname)) {
 			ERROR("failed to setup the utsname for '%s'", name);
-- 
1.9.1


More information about the lxc-users mailing list