mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-03 07:45:17 +00:00
ns: Do not change net_ns in prepare_net_namespaces()
In next patches usernsd will need to create transport socket in the same net_ns as other tasks do their TRANSPORT_FD_OFF sockets. Choose criu net_ns for that: this allows usernsd to do not wait for creation of other net_ns, i.e. to do not introduce new dependencies between tasks. In case of (root_ns_mask & CLONE_NEWUSER) != 0 root_item's user_ns does not allow to restore criu net_ns, so do prepare_net_namespaces() in sub-process to do not lose criu net. v3: Introduce __prepare_net_namespaces and execute it in cloned task. 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
0904d50e67
commit
9c7195ff39
14
criu/net.c
14
criu/net.c
@@ -2325,14 +2325,11 @@ static int create_net_ns(void *arg)
|
|||||||
exit(ret);
|
exit(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
int prepare_net_namespaces()
|
static int __prepare_net_namespaces(void *unused)
|
||||||
{
|
{
|
||||||
struct ns_id *nsid;
|
struct ns_id *nsid;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (!(root_ns_mask & CLONE_NEWNET))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
for (nsid = ns_ids; nsid != NULL; nsid = nsid->next) {
|
for (nsid = ns_ids; nsid != NULL; nsid = nsid->next) {
|
||||||
if (nsid->nd != &net_ns_desc)
|
if (nsid->nd != &net_ns_desc)
|
||||||
continue;
|
continue;
|
||||||
@@ -2389,6 +2386,15 @@ err:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int prepare_net_namespaces(void)
|
||||||
|
{
|
||||||
|
if (!(root_ns_mask & CLONE_NEWNET))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return call_in_child_process(__prepare_net_namespaces, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static int do_restore_task_net_ns(struct ns_id *nsid, struct pstree_item *current)
|
static int do_restore_task_net_ns(struct ns_id *nsid, struct pstree_item *current)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
@@ -1 +1 @@
|
|||||||
{'flavor': 'ns uns', 'flags': 'suid', 'feature': 'tun'}
|
{'flavor': 'ns uns', 'flags': 'suid noauto', 'feature': 'tun'}
|
||||||
|
Reference in New Issue
Block a user