[CRIU] [PATCH v3 01/11] mount: save fs root fd of ps tree root mnt ns in its ns_id
Pavel Emelyanov
xemul at virtuozzo.com
Tue Aug 23 05:05:59 PDT 2016
Cc Andrey.
This correlates with your patches that rework opening procedure.
On 08/10/2016 10:12 PM, Eugene Batalov wrote:
> New criu gc command needs to access files in every ps tree ns.
> It will use ns_id.mnt.root_fd for this.
> ps tree processes shouldn't be created during criu gc so we can't
> use /proc/$ns_pid/root based schema used in criu restore command.
>
> Signed-off-by: Eugene Batalov <eabatalov89 at gmail.com>
> ---
> criu/mount.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/criu/mount.c b/criu/mount.c
> index 0f81681..7bbd30b 100644
> --- a/criu/mount.c
> +++ b/criu/mount.c
> @@ -3160,8 +3160,7 @@ void fini_restore_mntns(void)
> if (nsid->nd != &mnt_ns_desc)
> continue;
> close_safe(&nsid->mnt.ns_fd);
> - if (nsid->type != NS_ROOT)
> - close_safe(&nsid->mnt.root_fd);
> + close_safe(&nsid->mnt.root_fd);
> nsid->ns_populated = true;
> }
> }
> @@ -3495,6 +3494,10 @@ ns_created:
> nsid->mnt.ns_fd = open_proc(PROC_SELF, "ns/mnt");
> if (nsid->mnt.ns_fd < 0)
> goto err;
> + /* root_fd is used to restore file mappings */
> + nsid->mnt.root_fd = open_proc(PROC_SELF, "root");
> + if (nsid->mnt.root_fd < 0)
> + goto err;
> /* we set ns_populated so we don't need to open root_fd */
> nsid->ns_populated = true;
> continue;
>
More information about the CRIU
mailing list