Changes

642 bytes added ,  12:14, 16 January 2019
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 ===