[CRIU] [PATCH] zdtm: add ability to execute tests on aufs

Saied Kazemi saied at google.com
Sun Sep 7 23:36:15 PDT 2014


Here is an explanation of the problem.  As you know, the AUFS
implementation in the kernel has a bug.  Specifically, by pointing inside
AUFS branches, the file descriptors of links in /proc/<pid>/map_files
create two problems (these file descriptors are saved by ma_get_mapfile()
in vma->vm_file_fd):

1. When doing readlink() on them, the path inside the branch is not
accessible in the mount namespace.

2. When reading their /proc/<pid>/fdinfo, the mnt_id value corresponds to a
mountpoint that is not visible in the mount namespace.

The patch that we applied earlier addressed issue 1 above.  Attached is a
patch for issue 2 if we need a quick workaround but I would like a better
solution.  The patch has a special provision for AUFS to return the root
mountpoint if mnt_id cannot be found.

What do you guys think?

--Saied



On Wed, Sep 3, 2014 at 12:32 AM, Andrew Vagin <avagin at parallels.com> wrote:

> On Tue, Sep 02, 2014 at 03:14:17PM -0700, Saied Kazemi wrote:
> > Pertaining to my previous email, I noticed that when I upgraded my Ubuntu
> > 14.04's default 3.13 kernel to 3.15 using instructions at http://
> > ubuntuhandbook.org/index.php/2014/06/install-upgrade-linux-kernel-3-15,
> it
> > lacks AUFS support causing Docker to use VFS.
> >
> > I need to test the same system as yours with 3.15 kernel and AUFS
> support.
> >  What are you using?
>
> I use the aufs3.16 branch of https://github.com/sfjro/aufs3-linux
>
> >
> > --Saied
> >
> >
> >
> > On Tue, Sep 2, 2014 at 11:36 AM, Saied Kazemi <saied at google.com> wrote:
> >
> >     Andrew,
> >
> >     I installed 3.15 and ran the env00 test but it succeeded for me
> (please see
> >     below).  I also verified that checkpointing and restoring Docker
> containers
> >     using AUFS still works.
> >
> >     I noticed that you're specifying --aufs which was removed in commit
> >     102a6778.
> >
> >     Can you please try again with CRIU source from the head?  If it still
> >     fails, please send me specific information on how to reproduce the
> problem.
> >
> >     Thanks,
> >
> >     --Saied
> >
> >     $ uname -a
> >     Linux saied-docker 3.15.0-031500-generic #201406131105 SMP Fri Jun 13
> >     15:06:46 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
> >     $ sudo bash test/zdtm.sh ns/static/env00
> >     ================================= CRIU CHECK
> ==============================
> >     ===
> >     Error (timerfd.c:56): timerfd: No timerfd support for c/r:
> Inappropriate
> >     ioctl for device
> >     ============================= WARNING =============================
> >     Not all features needed for CRIU are merged to upstream kernel yet,
> >     so for now we maintain our own branch which can be cloned from:
> >     git://git.kernel.org/pub/scm/linux/kernel/git/gorcunov/linux-cr.git
> >     ===================================================================
> >     Execute zdtm/live/static/env00
> >     ./env00 --pidfile=env00.pid --outfile=env00.out --envname=ENV_00_TEST
> >     /home/saied/work/crtools.upstream/test
> >     Dump 6558
> >     Restore
> >     Check results 6587
> >     18:26:23.831:     5: PASS
> >     Test: zdtm/live/static/env00, Result: PASS
> >     ZDTM tests PASS.
> >
> >     $
> >
> >
> >     On Tue, Sep 2, 2014 at 9:07 AM, Saied Kazemi <saied at google.com>
> wrote:
> >
> >         Hi Andrew,
> >
> >         I was kind of afraid of this because none of the kernels that I
> had
> >         supported mnt_id.  I will install 3.15 to investigate the issue
> and get
> >         back to you soon.
> >
> >         --Saied
> >
> >
> >
> >         On Tue, Sep 2, 2014 at 7:05 AM, Andrew Vagin <
> avagin at parallels.com>
> >         wrote:
> >
> >             Hi Saied,
> >
> >             I found an issue, which blocks testing of aufs.
> >             We can't dump nothing on a new kernel (3.15), which shows
> mnt_id in
> >             /proc/PID/fdinfo/FD. Looks like we need to fixup mnt_id for
> aufs
> >             files
> >             too.
> >
> >             Said, could you look at this issue?
> >
> >
> >             [root at avagin-fc19-cr criu]# bash  test/zdtm.sh --aufs
> ns/static/
> >             env00
> >             ================================= CRIU CHECK
> ======================
> >             ===========
> >             Error (timerfd.c:56): timerfd: No timerfd support for c/r:
> >             Inappropriate ioctl for device
> >             ============================= WARNING
> =============================
> >             Not all features needed for CRIU are merged to upstream
> kernel yet,
> >             so for now we maintain our own branch which can be cloned
> from:
> >             git://
> git.kernel.org/pub/scm/linux/kernel/git/gorcunov/linux-cr.git
> >
>  ===================================================================
> >             Execute zdtm/live/static/env00
> >             ./env00 --pidfile=env00.pid --outfile=env00.out --envname=
> >             ENV_00_TEST
> >             /root/git/orig/criu/test
> >             Dump 30437
> >             WARNING: env00 returned 1 and left running for debug needs
> >             Test: zdtm/live/static/env00, Result: FAIL
> >             ==================================== ERROR
> ========================
> >             ============
> >             Test: zdtm/live/static/env00, Namespace: 1
> >             Dump log   :
> /root/git/orig/criu/test/dump/static/env00/30437/1/
> >             dump.log
> >             --------------------------------- grep Error
> >             ---------------------------------
> >             (00.035741) Error (files-reg.c:629): Unable to look up the
> 33 mount
> >             (00.035771) Error (cr-dump.c:1665): Dump mappings (pid:
> 30437)
> >             failed with -1
> >             (00.036042) Error (cr-dump.c:1953): Dumping FAILED.
> >             ------------------------------------- END
> >             -------------------------------------
> >             ================================= ERROR OVER
> ======================
> >             ===========
> >
> >             [root at avagin-fc19-cr criu]# cat /proc/30437/mountinfo
> >             68 42 0:33 / / rw,relatime - aufs none rw,si=46777ba2737567db
> >             43 68 0:35 / /proc rw,relatime - proc proc rw
> >             44 68 0:36 / /dev/pts rw,relatime - devpts pts
> rw,mode=666,ptmxmode
> >             =666
> >
> >             [root at avagin-fc19-cr criu]# cat /proc/self/mountinfo | grep
> ^33
> >             33 0 8:3 / / rw,relatime shared:1 - ext4 /dev/sda3
> rw,data=ordered
> >
> >
> >
> >             On Sat, Aug 30, 2014 at 02:49:22PM +0400, Andrew Vagin wrote:
> >             > And here are a few issues:
> >             >
> >             > + cat
> /tmp/criu-root.7GvnTZ/dump/static/cwd01/6970/1/dump.log
> >             > (00.012328) Error (cr-dump.c:303): Can't open 6974/cwd on
> procfs:
> >             Stale file handle
> >             > (00.012350) Error (cr-dump.c:1671): Dump fs (pid: 6974)
> failed
> >             with -1
> >             > (00.012528) Error (cr-dump.c:1953): Dumping FAILED.
> >             >
> >             > + cat
> /tmp/criu-root.HTTKBE/dump/static/unlink_fstat03/14801/1/
> >             dump.log
> >             > (00.009870) Error (files-reg.c:455): Can't link remap to
> /zdtm/
> >             live/static/unlink_fstat03.test (deleted): No such file or
> >             directory
> >             > (00.009906) Error (cr-dump.c:1603): Dump files (pid: 14805)
> >             failed with -1
> >             > (00.010533) Error (cr-dump.c:1953): Dumping FAILED.
> >             >
> >             > + cat
> /tmp/criu-root.HDf6Nn/dump/static/unlink_mmap00/23065/1/
> >             dump.log
> >             > (00.008996) Error (proc_parse.c:472): Failed stat on
> 23069's map
> >             47071697305600 (/tmp/criu-root.HDf6Nn/zdtm/live/static/
> >             unlink_mmap00.test (deleted)): No such file or directory
> >             > (00.009021) Error (cr-dump.c:1515): Collect mappings (pid:
> 23069)
> >             failed with -1
> >             > (00.009228) Error (cr-dump.c:1953): Dumping FAILED.
> >             >
> >             > + cat /tmp/criu-root.XULszc/dump/static/inotify00/30616/1/
> >             dump.log
> >             > (00.010422) Error (proc_parse.c:1345): parse_fdinfo_pid_s:
> error
> >             parsing [inotify wd:2 ino:1202 sdev:24 mask:800afff
> ignored_mask:0
> >             > (00.010465) Error (cr-dump.c:1603): Dump files (pid: 30620)
> >             failed with -1
> >             > (00.011124) Error (cr-dump.c:1953): Dumping FAILED.
> >             >
> >             > We have problems with unlinked files and fsnotifies.
> >             >
> >             > Cc: Saied Kazemi <saied at google.com>
> >             > Signed-off-by: Andrew Vagin <avagin at openvz.org>
> >             > ---
> >             >  test/zdtm.sh | 11 ++++++++++-
> >             >  1 file changed, 10 insertions(+), 1 deletion(-)
> >             >
> >             > diff --git a/test/zdtm.sh b/test/zdtm.sh
> >             > index eee3342..f92a63f 100755
> >             > --- a/test/zdtm.sh
> >             > +++ b/test/zdtm.sh
> >             > @@ -412,7 +412,12 @@ start_test()
> >             >                       mkdir -p dump
> >             >                       ZDTM_ROOT=`mktemp -d
> /tmp/criu-root.XXXXXX`
> >             >                       ZDTM_ROOT=`readlink -f $ZDTM_ROOT`
> >             > -                     mount --make-private --bind .
> $ZDTM_ROOT ||
> >             return 1
> >             > +                     if [ -z "$ZDTM_AUFS" ]; then
> >             > +                             mount --make-private --bind .
> >             $ZDTM_ROOT || return 1
> >             > +                     else
> >             > +                             mount -t aufs -o br=. none
> >             $ZDTM_ROOT || return 1
> >             > +                             cd $ZDTM_ROOT
> >             > +                     fi
> >             >               fi
> >             >               construct_root $ZDTM_ROOT $test || return 1
> >             >               export ZDTM_NEWNS=1
> >             > @@ -901,6 +906,10 @@ while :; do
> >             >               }
> >             >               shift
> >             >               ;;
> >             > +     --aufs)
> >             > +             export ZDTM_AUFS=1
> >             > +             shift
> >             > +             ;;
> >             >         -*)
> >             >               echo "Unrecognized option $1, aborting!" 1>&2
> >             >               usage
> >             > --
> >             > 1.9.3
> >             >
> >
> >
> >
> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvz.org/pipermail/criu/attachments/20140907/f2ca5233/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Return-AUFS-root-mountpoint-if-mnt_id-is-not-found.patch
Type: application/octet-stream
Size: 2878 bytes
Desc: not available
URL: <http://lists.openvz.org/pipermail/criu/attachments/20140907/f2ca5233/attachment-0001.obj>


More information about the CRIU mailing list