mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 13:58:34 +00:00
mount: validate mounts only once on dump (v3)
mntinfo contains mounts from all namespaces, so we can validate it only once after collecting mounts. v2: add a fake comment about goto v3: add a real comment about goto Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
32b032b61c
commit
aadc309a4f
14
mount.c
14
mount.c
@@ -992,9 +992,6 @@ static int dump_mnt_ns(struct ns_id *ns, struct mount_info *pms)
|
|||||||
int img_fd = -1, ret = -1;
|
int img_fd = -1, ret = -1;
|
||||||
int ns_id = ns->id;
|
int ns_id = ns->id;
|
||||||
|
|
||||||
if (validate_mounts(pms, true))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
pr_info("Dumping mountpoints\n");
|
pr_info("Dumping mountpoints\n");
|
||||||
img_fd = open_image(CR_FD_MNTS, O_DUMP, ns_id);
|
img_fd = open_image(CR_FD_MNTS, O_DUMP, ns_id);
|
||||||
if (img_fd < 0)
|
if (img_fd < 0)
|
||||||
@@ -2095,8 +2092,12 @@ static int walk_mnt_ns(int (*cb)(struct ns_id *, struct mount_info *, void *), v
|
|||||||
if (mntinfo == NULL)
|
if (mntinfo == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
continue;
|
* Mount namespaces are dumped only if the root task lives in
|
||||||
|
* its own mntns, so we can stop enumeration of namespaces.
|
||||||
|
* We are not going to dump this tree, so we skip validation.
|
||||||
|
*/
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_info("Dump MNT namespace (mountpoints) %d via %d\n", ns->id, ns->pid);
|
pr_info("Dump MNT namespace (mountpoints) %d via %d\n", ns->id, ns->pid);
|
||||||
@@ -2111,6 +2112,9 @@ static int walk_mnt_ns(int (*cb)(struct ns_id *, struct mount_info *, void *), v
|
|||||||
}
|
}
|
||||||
if (collect_shared(mntinfo))
|
if (collect_shared(mntinfo))
|
||||||
goto err;
|
goto err;
|
||||||
|
if (validate_mounts(mntinfo, true))
|
||||||
|
goto err;
|
||||||
|
out:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
err:
|
err:
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user