[CRIU] restore of deleted standalone unix sockets
Pavel Emelyanov
xemul at virtuozzo.com
Tue Jun 28 05:33:17 PDT 2016
On 06/28/2016 03:32 PM, Pavel Emelyanov wrote:
> On 06/22/2016 08:35 PM, Tycho Andersen wrote:
>> Hi guys,
>>
>> I noticed that restoring of standalone unix sockets in the LISTEN state fails,
>
> But the static/sk-unix-rel does exactly this -- socket() bind() listen() then
> C/R then connect and accept. And it passes :)
Ah! __Unlinked__ listening socket :) Disregard my question.
>> because we don't keep the address during the dump phase, and the kernel expects
>> us to bind() to an address before we can listen() on these sockets (see test
>> for an example).
>>
>> One problem with this patch is that if there are two sockets bound to the same
>> path, but one was deleted, we could fail if we restore the non-deleted one
>> first. I think there are a few options for this:
>>
>> 1. Try to order the sockets so they're always restored in the right order
>> (similar to how the process did it the first time). I'm not aware of any
>> ordering hooks we have in the code to do this.
>> 2. Try to bind the socket to some other path; since it is deleted, nobody can
>> connect to it anyway, so it doesn't matter where it's bound.
>> 3. Don't care about this case ;)
>>
>> Anyway, here's a first draft of a set, let me know what you think.
>>
>> Tycho
>>
>> _______________________________________________
>> CRIU mailing list
>> CRIU at openvz.org
>> https://lists.openvz.org/mailman/listinfo/criu
>> .
>>
>
More information about the CRIU
mailing list