[CRIU] [PATCH 5/5] zdtm: now tempfs_overmounted will pass so remove crfail

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Fri Dec 8 11:24:59 MSK 2017


It does not work with your test. But problem is not with dumping mounts:

Mountinfo before dump:

445 486 0:58 / /zdtm/static/tempfs_overmounted.test/a rw,relatime - 
tmpfs none rw
446 445 0:59 / /zdtm/static/tempfs_overmounted.test/a rw,relatime - 
tmpfs none rw
447 446 0:60 / /zdtm/static/tempfs_overmounted.test/a/b rw,relatime - 
tmpfs none rw

 From dump.log:

(00.039801) mnt: Dumping mountpoints
(00.039804) mnt:        447: 3c:/ @ 
./zdtm/static/tempfs_overmounted.test/a/b
(00.049538) mnt:        446: 3b:/ @ ./zdtm/static/tempfs_overmounted.test/a
(00.049551) mnt: Mount is not fully visible 
./zdtm/static/tempfs_overmounted.test/a
(00.049589) mnt:        mount has children 
./zdtm/static/tempfs_overmounted.test/a
(00.065489) mnt:        445: 3a:/ @ ./zdtm/static/tempfs_overmounted.test/a
(00.065499) mnt: Mount is not fully visible 
./zdtm/static/tempfs_overmounted.test/a
(00.065530) mnt:        mount is overmounted 
./zdtm/static/tempfs_overmounted.test/a

tmpfs-dev-59.tar.gz.img and tmpfs-dev-58.tar.gz.img both are saved.

We even mount both 445 and 446, in restore.log:

(00.101594)      1: mnt:        Mounting tmpfs 
@/tmp/.criu.mntns.szk2Td/9-0000000001/zdtm/static/tempfs_overmounted.test/a 
(0)
(00.110129)      1: mnt: 
445:/tmp/.criu.mntns.szk2Td/9-0000000001/zdtm/static/tempfs_overmounted.test/a 
private 1 shared 0 slave 0
(00.110156)      1: mnt:        Mounting tmpfs 
@/tmp/.criu.mntns.szk2Td/9-0000000001/zdtm/static/tempfs_overmounted.test/a 
(0)
(00.118390)      1: mnt: 
446:/tmp/.criu.mntns.szk2Td/9-0000000001/zdtm/static/tempfs_overmounted.test/a 
private 1 shared 0 slave 0

But here is the problem:

(00.152632)      1: mnt: Move mount 
/tmp/.criu.mntns.szk2Td/9-0000000001/zdtm/static/tempfs_overmounted.test/a 
-> 
/tmp/.criu.mntns.szk2Td/9-0000000000/zdtm/static/tempfs_overmounted.test/a

We want to move overmounted mount and thus instead move it's 
children-overmount, that's why mount 445 is lost.

I think it is because remap code operates with does_mnt_overmount() 
which checks that mount is sibling-overmount only, and 
children-overmounts are not remapped.

Will check these idea.

-- 
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.


More information about the CRIU mailing list