Commit beeabc3b authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

mount: add the mnt_roots mount in the mount tree on restore

Currently we connect roots of sub-namespaces to the root of the root
mount namespace. And we get problems, if the root of the root mntns is
shared, because all children of a shared mount must be propagated to
other mounts in this group.

Actually we mount tmpfs in mnt_roots and here is nothing wrong to add it
in a tree.
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 4e7064cd
......@@ -238,9 +238,26 @@ static bool mounts_equal(struct mount_info* mi, struct mount_info *c, bool bind)
return true;
}
/*
* mnt_roots is a temporary directory for restoring sub-trees of
* non-root namespaces.
*/
static char *mnt_roots;
static struct mount_info *mnt_build_ids_tree(struct mount_info *list)
{
struct mount_info *m, *root = NULL;
struct mount_info *tmp_root_mount = NULL;
if (mnt_roots) {
/* mnt_roots is a tmpfs mount and it's private */
tmp_root_mount = mnt_entry_alloc();
if (!tmp_root_mount)
return NULL;
tmp_root_mount->mountpoint = mnt_roots;
tmp_root_mount->mounted = true;
}
/*
* Just resolve the mnt_id:parent_mnt_id relations
......@@ -280,7 +297,7 @@ static struct mount_info *mnt_build_ids_tree(struct mount_info *list)
* root mount namespace, so its parent is
* the main root.
*/
p = root;
p = tmp_root_mount;
} else
return NULL;
}
......@@ -294,6 +311,11 @@ static struct mount_info *mnt_build_ids_tree(struct mount_info *list)
return NULL;
}
if (mnt_roots) {
tmp_root_mount->parent = root;
list_add_tail(&tmp_root_mount->siblings, &root->children);
}
return root;
}
......@@ -1749,12 +1771,6 @@ void mnt_entry_free(struct mount_info *mi)
xfree(mi);
}
/*
* mnt_roots is a temporary directory for restoring sub-trees of
* non-root namespaces.
*/
static char *mnt_roots;
/*
* Helper for getting a path to where the namespace's root
* is re-constructed.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment