[CRIU] [PATCH 02/11] mount: execute collect shared for all mounts

Pavel Emelyanov xemul at parallels.com
Mon Aug 4 03:32:54 PDT 2014


On 07/25/2014 01:12 AM, Andrey Vagin wrote:
> Current on dump it is executed for each namespace, so we can skip
> dependencies between namespace.

I don't get it.

> For example we can have two namespaces.
> The first one contains a tmpfs mount and the second one contains a
> non-root bind-mount of this tmpfs. Without this patch this example can't
> be dumped.
> 
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
>  mount.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/mount.c b/mount.c
> index 32410eb..50171a3 100644
> --- a/mount.c
> +++ b/mount.c
> @@ -545,8 +545,6 @@ static struct mount_info *mnt_build_tree(struct mount_info *list)
>  		return NULL;
>  
>  	mnt_resort_siblings(tree);
> -	if (collect_shared(list))
> -		return NULL;
>  	pr_info("Done:\n");
>  	mnt_tree_show(tree, 0);
>  	return tree;
> @@ -1859,6 +1857,9 @@ static int populate_mnt_ns(struct mount_info *mis)
>  	if (!pms)
>  		return -1;
>  
> +	if (collect_shared(mis))
> +		return -1;
> +
>  	for (nsid = ns_ids; nsid; nsid = nsid->next) {
>  		if (nsid->nd != &mnt_ns_desc)
>  			continue;
> @@ -2107,6 +2108,8 @@ static int walk_mnt_ns(int (*cb)(struct ns_id *, struct mount_info *, void *), v
>  
>  		mntinfo_add_list(pms);
>  	}
> +	if (collect_shared(mntinfo))
> +		goto err;
>  	ret = 0;
>  err:
>  	return ret;
> 



More information about the CRIU mailing list