mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-04 16:25:31 +00:00
files: Do setup_newborn_fds() later
This patch makes the call of service fds relocation after root_prepare_shared()->prepare_fd_pid(). Next patches will make service_fd_base depend on task's max fd used, and for root_item we need to read all fles to know the maximum of them. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
committed by
Andrei Vagin
parent
d076328ce0
commit
37b99ebe5b
@@ -1051,9 +1051,6 @@ static int setup_newborn_fds(struct pstree_item *me)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (log_init_by_pid(vpid(me)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1607,9 +1604,6 @@ static int restore_task_with_children(void *_arg)
|
|||||||
if ( !(ca->clone_flags & CLONE_FILES))
|
if ( !(ca->clone_flags & CLONE_FILES))
|
||||||
close_safe(&ca->fd);
|
close_safe(&ca->fd);
|
||||||
|
|
||||||
if (setup_newborn_fds(current))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
pid = getpid();
|
pid = getpid();
|
||||||
if (vpid(current) != pid) {
|
if (vpid(current) != pid) {
|
||||||
pr_err("Pid %d do not match expected %d\n", pid, vpid(current));
|
pr_err("Pid %d do not match expected %d\n", pid, vpid(current));
|
||||||
@@ -1617,6 +1611,9 @@ static int restore_task_with_children(void *_arg)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (log_init_by_pid(vpid(current)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (current->parent == NULL) {
|
if (current->parent == NULL) {
|
||||||
/*
|
/*
|
||||||
* The root task has to be in its namespaces before executing
|
* The root task has to be in its namespaces before executing
|
||||||
@@ -1683,6 +1680,9 @@ static int restore_task_with_children(void *_arg)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (setup_newborn_fds(current))
|
||||||
|
goto err;
|
||||||
|
|
||||||
if (restore_task_mnt_ns(current))
|
if (restore_task_mnt_ns(current))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user