[CRIU] [PATCH 04/13] mounts: allow to customize root path for cr_pivot_root
Pavel Emelyanov
xemul at parallels.com
Tue Mar 11 12:36:18 PDT 2014
On 03/11/2014 07:18 PM, Andrey Vagin wrote:
> We are going to restore nested mount namespaces and we will need to
> change root for each of them.
>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
> mount.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/mount.c b/mount.c
> index 28a0072..ee79ec7 100644
> --- a/mount.c
> +++ b/mount.c
> @@ -1199,11 +1199,16 @@ static int clean_mnt_ns(void)
> return mnt_tree_for_each_reverse(mntinfo_tree, do_umount_one);
> }
>
> -static int cr_pivot_root(void)
> +static int cr_pivot_root(char *root)
> {
> char put_root[] = "crtools-put-root.XXXXXX";
>
> - pr_info("Move the root to %s\n", opts.root);
> + pr_info("Move the root to %s\n", root);
> +
> + if (chdir(root)) {
There's the 2nd chdir() in the caller. Is it OK?
> + pr_perror("chdir(%s) failed", root);
> + return -1;
> + }
>
> if (mkdtemp(put_root) == NULL) {
> pr_perror("Can't create a temporary directory");
> @@ -1217,6 +1222,11 @@ static int cr_pivot_root(void)
> return -1;
> }
>
> + if (mount("none", put_root, "none", MS_REC|MS_PRIVATE, NULL)) {
> + pr_perror("Can't remount root with MS_PRIVATE");
> + return -1;
> + }
And this MS_PRIVATE tagging either. Is it OK as well?
> +
> if (umount2(put_root, MNT_DETACH)) {
> pr_perror("Can't umount %s", put_root);
> return -1;
> @@ -1415,7 +1425,7 @@ int prepare_mnt_ns(int ns_pid)
> goto out;
>
> if (opts.root)
> - ret = cr_pivot_root();
> + ret = cr_pivot_root(opts.root);
> out:
> return ret;
> }
>
More information about the CRIU
mailing list