[CRIU] [PATCH v4 14/17] cr-restore: new list of ns shared objects introduced
Pavel Emelyanov
xemul at parallels.com
Tue Jan 19 07:08:16 PST 2016
On 01/07/2016 07:10 PM, Stanislav Kinsburskiy wrote:
> Autofs restore needs to create some shared data structures to be able to pass
> data to actual autofs master.
> But on mount restore stage shared data is not configured yet.
> This list of objects and their actors is processed after all mounts and shared
> data are restored to let autofs to create the objects.
>
> Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
> ---
> cr-restore.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/cr-restore.c b/cr-restore.c
> index ea83b44..90b3c4c 100644
> --- a/cr-restore.c
> +++ b/cr-restore.c
> @@ -181,6 +181,39 @@ static struct collect_image_info *cinfos[] = {
> &file_locks_cinfo,
> };
>
> +struct shared_ns_object {
Strange name :)
Try to move tty_setup_slavery() and resolve_unix_peers() onto this.
> + struct list_head list;
> + int (*actor)(void *data);
> + void *data;
> +};
> +
> +struct list_head shared_ns_objects = LIST_HEAD_INIT(shared_ns_objects);
> +
> +int add_shared_ns_obj(int (*actor)(void *data), void *data)
> +{
> + struct shared_ns_object *obj;
> +
> + obj = xmalloc(sizeof(*obj));
> + if (!obj)
> + return -1;
> +
> + obj->actor = actor;
> + obj->data = data;
> + list_add(&obj->list, &shared_ns_objects);
> + return 0;
> +}
> +
> +static int prepare_ns_shared(void)
> +{
> + struct shared_ns_object *o;
> +
> + list_for_each_entry(o, &shared_ns_objects, list) {
> + if (o->actor(o->data))
> + return -1;
> + }
> + return 0;
> +}
> +
> static int root_prepare_shared(void)
> {
> int ret = 0, i;
> @@ -250,6 +283,10 @@ static int root_prepare_shared(void)
> if (ret)
> goto err;
>
> + ret = prepare_ns_shared();
> + if (ret)
> + goto err;
> +
> show_saved_shmems();
> show_saved_files();
> err:
>
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
> .
>
More information about the CRIU
mailing list