[CRIU] TCP_REPAIR and which kernel patches
Adrian Reber
adrian at lisas.de
Thu Dec 22 02:47:04 PST 2016
Found it:
tcp: add an ability to dump and restore window parameters
Applying that patch makes it work.
Adrian
On Wed, Dec 21, 2016 at 07:54:53PM +0100, Adrian Reber wrote:
> I am trying to get criu and TCP_REPAIR working on the RHEL kernel and it
> seems to work. Partly at least:
>
> #️ criu/criu check --feature tcp_half_closed
> Warn (criu/autofs.c:79): Failed to find pipe_ino option (old kernel?)
> tcp_half_closed is supported
>
> That looks good. Some of the test in zdtm are working correctly, but one
> tests seems to timeout:
>
> #️ ./zdtm.py run -f h -t zdtm/static/socket-tcp-close-wait
> Checking feature tcp_half_closed
> === Run 1/1 ================ zdtm/static/socket-tcp-close-wait
>
> ================== Run zdtm/static/socket-tcp-close-wait in h ==================
> Start test
> Running zdtm/static/socket-tcp-close-wait.hook(--post-start)
> ./socket-tcp-close-wait --pidfile=socket-tcp-close-wait.pid --outfile=socket-tcp-close-wait.out
> Running zdtm/static/socket-tcp-close-wait.hook(--pre-dump)
> State Recv-Q Send-Q Local Address:Port Peer Address:Port
> LISTEN 0 1 *:8880 *:*
> ESTAB 0 0 127.0.0.1:8880 127.0.0.1:59768
> ESTAB 0 0 127.0.0.1:59768 127.0.0.1:8880
> FIN-WAIT-2 0 0 127.0.0.1:59766 127.0.0.1:8880
> CLOSE-WAIT 1 0 127.0.0.1:8880 127.0.0.1:59766
> Run criu dump
> Running zdtm/static/socket-tcp-close-wait.hook(--pre-restore)
> Run criu restore
> Running zdtm/static/socket-tcp-close-wait.hook(--post-restore)
> State Recv-Q Send-Q Local Address:Port Peer Address:Port
> LISTEN 0 1 *:8880 *:*
> ESTAB 0 0 127.0.0.1:8880 127.0.0.1:59768
> ESTAB 0 0 127.0.0.1:59768 127.0.0.1:8880
> FIN-WAIT-2 0 0 127.0.0.1:59766 127.0.0.1:8880
> CLOSE-WAIT 1 0 127.0.0.1:8880 127.0.0.1:59766
> Check TCP images
> dump/zdtm/static/socket-tcp-close-wait/32/1/tcp-stream-11f12.img
> dump/zdtm/static/socket-tcp-close-wait/32/1/tcp-stream-11f13.img
> dump/zdtm/static/socket-tcp-close-wait/32/1/tcp-stream-11f11.img
> Send the 15 signal to 32
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 0.100000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 0.200000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 0.400000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 0.800000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 1.600000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 3.200000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 6.400000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 12.800000
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 25.600000
> PID TTY TIME CMD
> 32 ? 00:00:00 socket-tcp-clos
> PID TTY STAT TIME COMMAND
> 1 ? S+ 0:00 python2 zdtm.py
> 3 ? R+ 0:00 python2 zdtm.py
> 40 ? R+ 0:00 \_ ps axf 32
> 31 ? S+ 0:00 ./socket-tcp-close-wait --pidfile=socket-tcp-close-wait.pid --outfile=socket-tcp-close-wait.out
> 32 ? Ss 0:00 ./socket-tcp-close-wait --pidfile=socket-tcp-close-wait.pid --outfile=socket-tcp-close-wait.out
> Test zdtm/static/socket-tcp-close-wait FAIL at zdtm/static/socket-tcp-close-wait die
> Send the 9 signal to 32
> Wait for zdtm/static/socket-tcp-close-wait(32) to die for 0.100000
> Running zdtm/static/socket-tcp-close-wait.hook(--clean)
> ##################################### FAIL #####################################
>
> I have following patch applied
>
> tcp: allow to enable the repair mode for non-listening sockets
>
> Is that enough? It works on a Fedora system with a 4.10rc kernel.
>
> # cat zdtm/static/socket-tcp-close-wait.out.inprogress
> 18:51:53.084: 32: rcv_size = 0
>
> According to gdb one process is hanging in line 161 and the other
> process in 254.
>
> Adrian
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
Adrian
--
Adrian Reber <adrian at lisas.de> http://lisas.de/~adrian/
Reliable source, n.:
The guy you just met.
More information about the CRIU
mailing list