[CRIU] [PATCH CRIU 1/4] mount: get over autodetected mounts in search for widest shared peer
Andrew Vagin
avagin at virtuozzo.com
Wed Jan 20 10:23:01 PST 2016
On Wed, Jan 20, 2016 at 06:42:55PM +0300, Pavel Tikhomirov wrote:
> now all autodetected mounts are considered to be shared - fix it
I don't understand what and how you fix.
>
> In VZ7:
> vzctl exec 101 mkdir /testmounts /testmounts/dir /testmounts/bind
> /testmounts/tmp /testmounts/dir/b
> vzctl exec 101 mount --bind /testmounts/dir /testmounts/bind
> vzctl exec 101 mount --bind /testmounts/tmp /testmounts/bind/b
> vzctl suspend 101; vzctl resume 101
>
> In criu logs:
> The restore log was saved in /vz/private/101/dump/Dump/restore.log
> Failed to restore the Container
>
> (00.213750) 1: Error (mount.c:631): mnt: 134:./testmounts/bind and
> 137:./testmounts/dir/b have different set of mounts
>
> but those two are really different
>
> https://jira.sw.ru/browse/PSBM-42829
> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
> ---
> mount.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/mount.c b/mount.c
> index 9d5667a..e267e10 100644
> --- a/mount.c
> +++ b/mount.c
> @@ -472,14 +472,27 @@ static int try_resolve_ext_mount(struct mount_info *info)
> static struct mount_info *find_widest_shared(struct mount_info *m)
> {
> struct mount_info *p;
> + bool madm = !strcmp(m->root, AUTODETECTED_MOUNT);
>
> /*
> * Try to find a mount, which is wider or equal.
> * A is wider than B, if A->root is a subpath of B->root.
> */
> - list_for_each_entry(p, &m->mnt_share, mnt_share)
> - if (issubpath(m->root, p->root))
> + list_for_each_entry(p, &m->mnt_share, mnt_share) {
> + bool padm = !strcmp(p->root, AUTODETECTED_MOUNT);
> +
> + /* Skip check between different kinds of mounts */
> + if (madm != padm)
> + continue;
> +
> + /*
> + * Compare source for autodetected mounts as
> + * root is always "CRIU:AUTOGENERATED" for them
> + */
> + if ((madm && issubpath(m->source, p->source))
> + || (!madm && issubpath(m->root, p->root)))
> return p;
> + }
>
> return NULL;
> }
> --
> 1.9.3
>
More information about the CRIU
mailing list