| 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 === |