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