Line 59:
Line 59:
=== Add support for checkpoint/restore of CORK-ed UDP socket ===
=== Add support for checkpoint/restore of CORK-ed UDP socket ===
−
'''Summary:''' TODO: Short description of the project
+
'''Summary:''' Support C/R of corked UDP socket
−
TODO: Detailed description of the project.
+
There's UDP_CORK option for sockets. As man page says:
+
<pre>
+
If this option is enabled, then all data output on this socket
+
is accumulated into a single datagram that is transmitted when
+
the option is disabled. This option should not be used in
+
code intended to be portable.
+
</pre>
+
+
Currently criu refuses to dump this case, so it's effectively a bug. Supporting
+
this will need extending the kernel API to allow criu read back the write queue
+
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then
+
the queue is written into the image and is restored into the socket (with the CORK
+
bit set too).
'''Links:'''
'''Links:'''
* https://github.com/checkpoint-restore/criu/issues/409
* https://github.com/checkpoint-restore/criu/issues/409
−
* Wiki links to relevant material
+
* [[Sockets]], [[TCP connection]]
−
* External links to mailing lists or web sites
+
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]
'''Details:'''
'''Details:'''
−
* Skill level: beginner or intermediate or advanced
+
* Skill level: intermediate (+linux kernel)
* Language: C
* Language: C
* Mentor: Pavel Emelianov <xemul@virtuozzo.com>
* Mentor: Pavel Emelianov <xemul@virtuozzo.com>
* Suggested by: Pavel Emelianov <xemul@virtuozzo.com>
* Suggested by: Pavel Emelianov <xemul@virtuozzo.com>
−
=== Optimize the pre-dump algorithm ===
=== Optimize the pre-dump algorithm ===