Commit 673ffade authored by Kirill Tkhai's avatar Kirill Tkhai Committed by Pavel Emelyanov

sk-unix: Move out interconnected pair setup

Signed-off-by: 's avatarKirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent c085d6af
...@@ -1339,10 +1339,29 @@ struct collect_image_info unix_sk_cinfo = { ...@@ -1339,10 +1339,29 @@ struct collect_image_info unix_sk_cinfo = {
.flags = COLLECT_SHARED, .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) static int resolve_unix_peers(void *unused)
{ {
struct unix_sk_info *ui, *peer; struct unix_sk_info *ui, *peer;
struct fdinfo_list_entry *fle, *fle_peer;
list_for_each_entry(ui, &unix_sockets, list) { list_for_each_entry(ui, &unix_sockets, list) {
if (ui->peer) if (ui->peer)
...@@ -1367,25 +1386,10 @@ static int resolve_unix_peers(void *unused) ...@@ -1367,25 +1386,10 @@ static int resolve_unix_peers(void *unused)
if (peer->ue->peer != ui->ue->ino) if (peer->ue->peer != ui->ue->ino)
continue; continue;
/* socketpair or interconnected sockets */
peer->peer = ui; peer->peer = ui;
/* /* socketpair or interconnected sockets */
* Select who will restore the pair. Check is identical to interconnected_pair(ui, peer);
* 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;
}
} }
pr_info("Unix sockets:\n"); pr_info("Unix sockets:\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment