From 92eb5ff5940fe0ee1ad7ef5cf44b88f11bdfd68d Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Thu, 24 Mar 2016 16:00:35 +0300 Subject: [PATCH] pipe: Run master resolve via post_cb engine Signed-off-by: Pavel Emelyanov --- criu/cr-restore.c | 2 -- criu/include/pipes.h | 1 - criu/pipes.c | 8 +++++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/criu/cr-restore.c b/criu/cr-restore.c index 928acc9fc..4d4b7c466 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -268,8 +268,6 @@ static int root_prepare_shared(void) if (ret < 0) goto err; - mark_pipe_master(); - ret = tty_setup_slavery(); if (ret) goto err; diff --git a/criu/include/pipes.h b/criu/include/pipes.h index d5c81f53b..2cdb7a90d 100644 --- a/criu/include/pipes.h +++ b/criu/include/pipes.h @@ -6,7 +6,6 @@ extern struct collect_image_info pipe_cinfo; extern int collect_pipes(void); -extern void mark_pipe_master(void); extern const struct fdtype_ops pipe_dump_ops; static inline u32 pipe_id(const struct fd_parms *p) diff --git a/criu/pipes.c b/criu/pipes.c index 876eb9374..d48cbf462 100644 --- a/criu/pipes.c +++ b/criu/pipes.c @@ -5,6 +5,7 @@ #include #include +#include "crtools.h" #include "imgset.h" #include "image.h" #include "files.h" @@ -93,7 +94,7 @@ int collect_pipe_data(int img_type, struct pipe_data_rst **hash) } /* Choose who will restore a pipe. */ -void mark_pipe_master(void) +static int mark_pipe_master(void *unused) { LIST_HEAD(head); @@ -156,6 +157,7 @@ void mark_pipe_master(void) } list_splice(&head, &pipes); + return 0; } static struct pipe_data_rst *pd_hash_pipes[PIPE_DATA_HASH_SIZE]; @@ -394,6 +396,10 @@ static int collect_one_pipe(void *o, ProtobufCMessage *base) list_add(&pi->pipe_list, &tmp->pipe_list); } + if (list_empty(&pipes)) + if (add_post_prepare_cb(mark_pipe_master, NULL)) + return -1; + list_add_tail(&pi->list, &pipes); return 0;