fix mounts not propagating back to root mntns during create and clone

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@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
Dwight Engen 2014-02-19 16:44:19 -05:00 committed by Stéphane Graber
parent f88bfaa3f8
commit c597baa8f9
2 changed files with 7 additions and 1 deletions

View File

@ -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) {

View File

@ -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...");
}