2
0
mirror of git://github.com/lxc/lxc synced 2025-09-03 23:19:30 +00:00

start: reorder START_SYNC_POST_CONFIGURE

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner
2021-05-21 11:18:21 +02:00
parent 46a3bf0778
commit 8945dad0dd

View File

@@ -1800,13 +1800,11 @@ static int lxc_spawn(struct lxc_handler *handler)
ERROR("Failed to create the network"); ERROR("Failed to create the network");
goto out_delete_net; goto out_delete_net;
} }
}
ret = lxc_network_send_to_child(handler); /* Tell the child to continue its initialization. */
if (ret < 0) { if (!lxc_sync_wake_child(handler, START_SYNC_POST_CONFIGURE))
ERROR("Failed to send veth names to child");
goto out_delete_net; goto out_delete_net;
}
}
ret = lxc_rootfs_prepare_parent(handler); ret = lxc_rootfs_prepare_parent(handler);
if (ret) { if (ret) {
@@ -1814,18 +1812,20 @@ static int lxc_spawn(struct lxc_handler *handler)
goto out_delete_net; goto out_delete_net;
} }
if (handler->ns_clone_flags & CLONE_NEWNET) {
ret = lxc_network_send_to_child(handler);
if (ret < 0) {
ERROR("Failed to send veth names to child");
goto out_delete_net;
}
}
if (!lxc_list_empty(&conf->procs)) { if (!lxc_list_empty(&conf->procs)) {
ret = setup_proc_filesystem(&conf->procs, handler->pid); ret = setup_proc_filesystem(&conf->procs, handler->pid);
if (ret < 0) if (ret < 0)
goto out_delete_net; goto out_delete_net;
} }
/* Tell the child to continue its initialization. We'll get
* START_SYNC_CGROUP when it is ready for us to setup cgroups.
*/
if (!lxc_sync_barrier_child(handler, START_SYNC_POST_CONFIGURE))
goto out_delete_net;
if (!lxc_list_empty(&conf->limits)) { if (!lxc_list_empty(&conf->limits)) {
ret = setup_resource_limits(&conf->limits, handler->pid); ret = setup_resource_limits(&conf->limits, handler->pid);
if (ret < 0) { if (ret < 0) {
@@ -1834,6 +1834,13 @@ static int lxc_spawn(struct lxc_handler *handler)
} }
} }
/*
* Wait for the child to tell us that it's ready for us to prepare
* cgroups.
*/
if (!lxc_sync_wait_child(handler, START_SYNC_CGROUP))
goto out_delete_net;
if (!lxc_sync_barrier_child(handler, START_SYNC_CGROUP_UNSHARE)) if (!lxc_sync_barrier_child(handler, START_SYNC_CGROUP_UNSHARE))
goto out_delete_net; goto out_delete_net;