From 673ffadeef339a00f40c8b2834d8400a67153ba4 Mon Sep 17 00:00:00 2001 From: Kirill Tkhai Date: Wed, 1 Jun 2016 19:02:55 +0300 Subject: [PATCH] sk-unix: Move out interconnected pair setup Signed-off-by: Kirill Tkhai Signed-off-by: Pavel Emelyanov --- criu/sk-unix.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/criu/sk-unix.c b/criu/sk-unix.c index 40cb9db7a..c6cf67262 100644 --- a/criu/sk-unix.c +++ b/criu/sk-unix.c @@ -1339,10 +1339,29 @@ struct collect_image_info unix_sk_cinfo = { .flags = COLLECT_SHARED, }; +static void interconnected_pair(struct unix_sk_info *ui, struct unix_sk_info *peer) +{ + struct fdinfo_list_entry *fle, *fle_peer; + /* + * Select who will restore the pair. Check is identical to + * the one in pipes.c and makes sure tasks wait for each other + * in pids sorting order (ascending). + */ + fle = file_master(&ui->d); + fle_peer = file_master(&peer->d); + + if (fdinfo_rst_prio(fle, fle_peer)) { + ui->flags |= USK_PAIR_MASTER; + peer->flags |= USK_PAIR_SLAVE; + } else { + peer->flags |= USK_PAIR_MASTER; + ui->flags |= USK_PAIR_SLAVE; + } +} + static int resolve_unix_peers(void *unused) { struct unix_sk_info *ui, *peer; - struct fdinfo_list_entry *fle, *fle_peer; list_for_each_entry(ui, &unix_sockets, list) { if (ui->peer) @@ -1367,25 +1386,10 @@ static int resolve_unix_peers(void *unused) if (peer->ue->peer != ui->ue->ino) continue; - /* socketpair or interconnected sockets */ peer->peer = ui; - /* - * Select who will restore the pair. Check is identical to - * the one in pipes.c and makes sure tasks wait for each other - * in pids sorting order (ascending). - */ - - fle = file_master(&ui->d); - fle_peer = file_master(&peer->d); - - if (fdinfo_rst_prio(fle, fle_peer)) { - ui->flags |= USK_PAIR_MASTER; - peer->flags |= USK_PAIR_SLAVE; - } else { - peer->flags |= USK_PAIR_MASTER; - ui->flags |= USK_PAIR_SLAVE; - } + /* socketpair or interconnected sockets */ + interconnected_pair(ui, peer); } pr_info("Unix sockets:\n");