• Andrei Vagin's avatar
    mount: restore mounts in the root mount namespace · b6f75771
    Andrei Vagin authored
    Currently all mounts are restored in a one mount namespace, then
    this namespace is cloned to restore other mount namespaces and
    we need another copy of this namespace to clean link remap files.
    
    Let's define terms:
    A - the root mount namespace
    B - the mount namespace where link remap files are destroyed
    
    Currently we restore all mounts in the B namespace and then
    clone it into the A namespace.
    
    But it doesn't work in a case, when we have to open file
    descriptores to restore mounts (e g to restore bind-mount
    pty slaves), because a file descriptor has to be opened from
    a specified mount (which is one of restore mount namespaces).
    
    This patch reworks code so, that all mounts is restored in the A mount
    namespace and then the B mount namespace is created. In this case
    we can open files from the root mount namespace (A).
    
    $ ./zdtm.py run -t zdtm/static/pty-console --iter 5
    
    ====================== Run zdtm/static/pty-console in ns =======================
    Start test
    Test is SUID
    ./pty-console --pidfile=pty-console.pid --outfile=pty-console.out
    Run criu dump
    Run criu restore
    Run criu dump
    =[log]=> dump/zdtm/static/pty-console/36/2/dump.log
    ------------------------ grep Error ------------------------
    (00.106521) Error (criu/files-reg.c:1132): Can't lookup mount=563 for fd=4 path=/ptmx
    (00.106585) Error (criu/cr-dump.c:1325): Dump files (pid: 70) failed with -1
    (00.129041) Error (criu/cr-dump.c:1674): Dumping FAILED.
    ------------------------ ERROR OVER ------------------------
    Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
    b6f75771
Name
Last commit
Last update
Documentation Loading commit data...
contrib Loading commit data...
coredump Loading commit data...
crit Loading commit data...
criu Loading commit data...
images Loading commit data...
include/common Loading commit data...
lib Loading commit data...
scripts Loading commit data...
soccr Loading commit data...
test Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
INSTALL.md Loading commit data...
Makefile Loading commit data...
Makefile.config Loading commit data...
Makefile.install Loading commit data...
Makefile.versions Loading commit data...
README.md Loading commit data...