[CRIU] TCP_REPAIR and which kernel patches

Andrei Vagin avagin at virtuozzo.com
Thu Dec 22 13:58:33 PST 2016


On Thu, Dec 22, 2016 at 11:47:04AM +0100, Adrian Reber wrote:
> Found it:
> 
> tcp: add an ability to dump and restore window parameters
> 
> Applying that patch makes it work.

I'm late again. It's good to know that you have solved a problem.

Thanks!

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