[lxc-devel] [PATCH] fix mounts not propagating back to root mntns during create and clone

Dwight Engen dwight.engen at oracle.com
Wed Feb 19 21:44:19 UTC 2014


Systems based on systemd mount the root shared by default. We don't want
mounts done during creation by templates nor those done internally by
bdev during rsync based clones to propagate to the root mntns.

The create case already had the right check, but the mount call was
missing "/", so it was failing.

Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
---
 src/lxc/bdev.c         | 6 ++++++
 src/lxc/lxccontainer.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
index 67fe72b..ab1c87b 100644
--- a/src/lxc/bdev.c
+++ b/src/lxc/bdev.c
@@ -2387,6 +2387,12 @@ static int rsync_rootfs(struct rsync_data *data)
 		SYSERROR("unshare CLONE_NEWNS");
 		return -1;
 	}
+	if (detect_shared_rootfs()) {
+		if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL)) {
+			SYSERROR("Failed to make / rslave to run rsync");
+			ERROR("Continuing...");
+		}
+	}
 
 	// If not a snapshot, copy the fs.
 	if (orig->ops->mount(orig) < 0) {
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index b8b11d6..0d89d11 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -913,7 +913,7 @@ static bool create_run_template(struct lxc_container *c, char *tpath, bool quiet
 				exit(1);
 			}
 			if (detect_shared_rootfs()) {
-				if (mount("", "", NULL, MS_SLAVE|MS_REC, 0)) {
+				if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL)) {
 					SYSERROR("Failed to make / rslave to run template");
 					ERROR("Continuing...");
 				}
-- 
1.8.3.1



More information about the lxc-devel mailing list