Commit afc61ba5 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

unux: postpone dumping sockets v2

Unix sockets are dumped, when a peer socket is found.
We are going to dump external sockets with help plugins. For the we need
to set the USK_CALLBACK flags in unix entry. Currently a socket is
dumped immediately when it's transfered, but we can be sure that a
socket is not external, only when we have its peer.

v2: add comments in code
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 59162ccc
......@@ -324,7 +324,13 @@ dump:
pr_info("Dumping unix socket at %d\n", p->fd);
show_one_unix("Dumping", sk);
if (write_unix_entry(sk))
/*
* Postpone writing the entry if a peer isn't found yet.
* It's required, because we may need to modify the entry.
* For example, if a socket is external and is dumped by
* a callback, the USK_CALLBACK flag must be set.
*/
if (list_empty(&sk->peer_node) && write_unix_entry(sk))
goto err;
list_del_init(&sk->list);
......@@ -335,6 +341,9 @@ dump:
psk = list_first_entry(&sk->peer_list, struct unix_sk_desc, peer_node);
close_safe(&psk->fd);
list_del_init(&psk->peer_node);
if (write_unix_entry(psk))
goto err;
}
return 0;
......@@ -559,6 +568,9 @@ int fix_external_unix_sockets(void)
psk = list_first_entry(&sk->peer_list, struct unix_sk_desc, peer_node);
close_safe(&psk->fd);
list_del_init(&psk->peer_node);
if (write_unix_entry(psk))
goto err;
}
}
......
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