[CRIU] [PATCHv4 0/8] Large pages support for aarch64/ppc64

Adrian Reber areber at redhat.com
Fri May 11 11:47:18 MSK 2018


Testing on ppc64le looks good:

==== ALARM ====
=== Run 351/355 ===============- zdtm/transition/pid_reuse
=== Run 352/355 ===============- zdtm/transition/file_read
=== Run 353/355 ===============- zdtm/transition/unix_sock
Skipping zdtm/transition/fifo_dyn (manual run only)
=== Run 355/355 ================ zdtm/transition/fifo_loop
==== ALARM ====
################### 1 TEST(S) FAILED (TOTAL 355/SKIPPED 34) ####################
 * zdtm/static/maps06(h)
##################################### FAIL #####################################

You said some time ago that maps06 has hardcoded page size and therefore it fails.

On aarch64:

==== ALARM ====
=== Run 353/355 ===============- zdtm/transition/unix_sock
Skipping zdtm/transition/fifo_dyn (manual run only)
==== ALARM ====
=== Run 355/355 ================ zdtm/transition/fifo_loop
==== ALARM ====
################### 11 TEST(S) FAILED (TOTAL 355/SKIPPED 35) ###################
 * zdtm/static/fd(h)
 * zdtm/static/userns00(uns)
 * zdtm/static/userns01(uns)
 * zdtm/static/userns02(uns)
 * zdtm/static/userns-leaked-sock(uns)
 * zdtm/static/netns_sub_veth(uns)
 * zdtm/static/pidns01(uns)
 * zdtm/static/maps06(h)
 * zdtm/static/cow01(h)
 * zdtm/transition/maps007(h)
 * zdtm/transition/socket_loop00(ns)
##################################### FAIL #####################################


=========================== Run zdtm/static/fd in h ============================
Start test
./fd --pidfile=fd.pid --outfile=fd.out
 Test zdtm/static/fd FAIL at start: [Errno 2] No such file or directory: 'zdtm/static/fd.pid' 

======================= Run zdtm/static/userns00 in uns ========================
Start test
Test is SUID
./userns00 --pidfile=userns00.pid --outfile=userns00.out
Run criu dump
Run criu restore
=[log]=> dump/zdtm/static/userns00/42/1/restore.log
------------------------ grep Error ------------------------
(00.871265)      1: Collecting 42/51 (flags 0)
(00.871277)      1: No tty-data.img image
(00.871287)      1:  `- ... done
(00.871295)      1: Restoring namespaces 1 flags 0x3c020000
(01.081300) Error (criu/cr-restore.c:1592): 73 killed by signal 7: Bus error
(01.081342) Error (criu/cr-restore.c:2319): Failed to switch restore stage to CR_STATE_PREPARE_NAMESPACES
(01.081369) Warn  (criu/cr-restore.c:2515): Unable to wait 73: No child processes(01.081402) Error (criu/mount.c:3175): mnt: Can't remove the directory /tmp/.criu.mntns.xNpFFA: No such file or directory
(01.081414) uns: calling exit_usernsd[0x46ae94] (-1, 1)
(01.081455) uns: daemon calls 0x46ae94 (71, -1, 1)
(01.081482) uns: `- daemon exits w/ 0
(01.081939) uns: daemon stopped
(01.081973) Error (criu/cr-restore.c:2529): Restoring FAILED.
------------------------ ERROR OVER ------------------------
################ Test zdtm/static/userns00 FAIL at CRIU restore ################

======================= Run zdtm/static/userns01 in uns ========================
Start test
Test is SUID
./userns01 --pidfile=userns01.pid --outfile=userns01.out
Run criu dump
Run criu restore
=[log]=> dump/zdtm/static/userns01/42/1/restore.log
------------------------ grep Error ------------------------
(00.952216)      1: Collecting 42/51 (flags 0)
(00.952229)      1: No tty-data.img image
(00.952239)      1:  `- ... done
(00.952247)      1: Restoring namespaces 1 flags 0x3c020000
(01.122258) Error (criu/cr-restore.c:1592): 63 killed by signal 7: Bus error
(01.122297) Error (criu/cr-restore.c:2319): Failed to switch restore stage to CR_STATE_PREPARE_NAMESPACES
(01.122323) Warn  (criu/cr-restore.c:2515): Unable to wait 63: No child processes(01.122356) Error (criu/mount.c:3175): mnt: Can't remove the directory /tmp/.criu.mntns.JGQx5R: No such file or directory
(01.122368) uns: calling exit_usernsd[0x46ae94] (-1, 1)
(01.122409) uns: daemon calls 0x46ae94 (61, -1, 1)
(01.122436) uns: `- daemon exits w/ 0
(01.122898) uns: daemon stopped
(01.122932) Error (criu/cr-restore.c:2529): Restoring FAILED.
------------------------ ERROR OVER ------------------------
################ Test zdtm/static/userns01 FAIL at CRIU restore ################


======================= Run zdtm/static/userns02 in uns ========================
Start test
Test is SUID
./userns02 --pidfile=userns02.pid --outfile=userns02.out
Run criu dump
Run criu restore
=[log]=> dump/zdtm/static/userns02/42/1/restore.log
------------------------ grep Error ------------------------
(00.982007)      1: Collecting 42/51 (flags 0)
(00.982019)      1: No tty-data.img image
(00.982029)      1:  `- ... done
(00.982037)      1: Restoring namespaces 1 flags 0x3c020000
(01.182049) Error (criu/cr-restore.c:1592): 70 killed by signal 7: Bus error
(01.182085) Error (criu/cr-restore.c:2319): Failed to switch restore stage to CR_STATE_PREPARE_NAMESPACES
(01.182110) Warn  (criu/cr-restore.c:2515): Unable to wait 70: No child processes(01.182143) Error (criu/mount.c:3175): mnt: Can't remove the directory /tmp/.criu.mntns.iVZcm3: No such file or directory
(01.182155) uns: calling exit_usernsd[0x46ae94] (-1, 1)
(01.182198) uns: daemon calls 0x46ae94 (68, -1, 1)
(01.182225) uns: `- daemon exits w/ 0
(01.182678) uns: daemon stopped
(01.182713) Error (criu/cr-restore.c:2529): Restoring FAILED.
------------------------ ERROR OVER ------------------------
################ Test zdtm/static/userns02 FAIL at CRIU restore ################

All user namespace tests are failing with the same error.

The cow01 failure:

03:53:48.837:    37: FAIL: cow01.c:196: sep_tcs[0x21]: 0xffffb8950000 child data mismatch (expected [332d60fa] got [9bf3a804]) (errno = 0 (Success))
03:53:48.846:    37: FAIL: cow01.c:196: sep_tcs[0x23]: 0xffffb8970000 child data mismatch (expected [332d60fa] got [879ee1c9]) (errno = 0 (Success))
03:53:48.866:    37: FAIL: cow01.c:196: sep_tcs[0x28]: 0xffffb89c0000 child data mismatch (expected [332d60fa] got [805be4a2]) (errno = 0 (Success))
03:53:48.871:    37: FAIL: cow01.c:196: sep_tcs[0x29]: 0xffffb89d0000 child data mismatch (expected [332d60fa] got [b28f6cec]) (errno = 0 (Success))
03:53:48.875:    37: FAIL: cow01.c:196: sep_tcs[0x2a]: 0xffffb89e0000 child data mismatch (expected [332d60fa] got [6ac08d4b]) (errno = 0 (Success))
03:53:48.879:    37: FAIL: cow01.c:196: sep_tcs[0x2b]: 0xffffb89f0000 child data mismatch (expected [332d60fa] got [306dfd18]) (errno = 0 (Success))
03:53:48.904:    37: FAIL: cow01.c:196: sep_tcs[0x31]: 0xffffb8a50000 child data mismatch (expected [332d60fa] got [36e0b6c2]) (errno = 0 (Success))


maps007 just seems to hang


================== Run zdtm/transition/socket_loop00 in ns ====================
Start test
./socket_loop00 --pidfile=socket_loop00.pid --outfile=socket_loop00.out
Run criu dump
Run criu restore
Send the 15 signal to  100
Wait for zdtm/transition/socket_loop00(100) to die for 0.100000
Wait for zdtm/transition/socket_loop00(100) to die for 0.200000
================= zdtm/transition/socket_loop00.out.inprogress =================
08:08:42.729:     4: PASS

================= zdtm/transition/socket_loop00.out.inprogress =================
########### Test zdtm/transition/socket_loop00 FAIL at result check ############




On Thu, May 10, 2018 at 07:14:40PM +0100, Dmitry Safonov wrote:
> v4 Changes:
> o aio tests failed case overflow in NR_IOEVENTS_IN_PAGES macro.
> 
> v3 Changes:
> o PAGE_SIZE as a global in PIEs doesn't work on aarch64,
>   I'll need to add relocs support to compel there eventually.
>   Revert this simplification to v1.
> 
> v2 Changes:
> o Add patches for global variables in PIEs
> o Simplify ARCH_HAS_LONG_PAGES
> o cache PAGE_SIZE and PAGE_SHIFT values
>   (as nitpicked by Mike)
> 
> TLDR; CRIU doesn't work if:
> on aarch64 it's when PAGE_SIZE!=4K,
> on ppc64 it's when PAGE_SIZE!=64K
> 
> Cc: Adrian Reber <areber at redhat.com>
> Cc: Mike Rapoport <rppt at linux.vnet.ibm.com>
> 
> Dmitry Safonov (8):
>   criu: Remove PAGE_IMAGE_SIZE
>   parasite: Rename misnamed nr_pages
>   aio: Allow expressions in NR_IOEVENTS_IN_PAGES macro
>   compel/criu: Add ARCH_HAS_LONG_PAGES to PIE binaries
>   criu/dump: Fix size of personality buffer
>   criu/log: Define log buffer length without PAGE_SIZE
>   criu/proc: Define BUF_SIZE without PAGE_SIZE dependency
>   ppc64/aarch64: Dynamically define PAGE_SIZE
> 
>  compel/include/rpc-pie-priv.h          |  3 +++
>  compel/plugins/std/infect.c            | 17 ++++++++++++
>  compel/src/lib/infect.c                |  3 +++
>  criu/aio.c                             |  2 +-
>  criu/arch/aarch64/crtools.c            |  3 +++
>  criu/arch/ppc64/crtools.c              |  3 +++
>  criu/cr-dump.c                         |  3 ++-
>  criu/cr-restore.c                      |  3 +++
>  criu/crtools.c                         |  1 -
>  criu/include/image.h                   |  5 ----
>  criu/include/restorer.h                |  3 +++
>  criu/log.c                             |  3 ++-
>  criu/pie/parasite.c                    | 10 ++++----
>  criu/pie/restorer.c                    | 16 ++++++++++++
>  criu/proc_parse.c                      |  6 ++---
>  include/common/arch/aarch64/asm/page.h | 45 ++++++++++++++++++++++++--------
>  include/common/arch/ppc64/asm/page.h   | 47 ++++++++++++++++++++++++----------
>  17 files changed, 131 insertions(+), 42 deletions(-)
> 
> -- 
> 2.13.6
> 


More information about the CRIU mailing list