Re: [PATCH] common/overlay,rc: introduce OVL_ALT_FSTYP for testing aufs

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Thu, Feb 13, 2020 at 2:05 AM Mauricio Faria de Oliveira
<mfo@xxxxxxxxxxxxx> wrote:
>
> Recently looking for an aufs test suite. The author clarified that
> 'There is no public test suite specific to aufs.' [1] at this time,
> and it looks like 'xfstests/tests/generic' should be enough [1, 2],
> and is clearly an improvement in terms of publicly available tests.
>
> Thus, building on top of the existing infrastructure for overlay,
> just introduce OVL_ALT_FSTYP that can be set to "aufs" to use it.
> (using overlay's upperdir as rw-branch and lowerdir as ro-branch).
>
> This is indeed a workaround^W simple change that does the job vs.
> creating a new FSTYP "aufs" and mechanically changing the number
> of places that check for "overlay" to just handle "aufs" as well.
> (so the effort is still small as aufs has no specific tests now.)

Very nice!
Please update README.overlay.

FYI, I made a similar small change to enable testing of fuse.overlay
with unionmount-testsuite:
https://github.com/amir73il/unionmount-testsuite/commit/a72c274e0f5d6d05ad7c563fc7eff42356bffd15
Therefore:
1. Your changes could be useful for testing fuse.overlay with xfstests
2. You can just as easily test aufs with unionmount-testsuite -
The test coverage is mostly orthogonal to that of xfstests
(patches are welcome)

>
> Currently, running the generic + overlay (i.e., ./check -overlay)
> tests (and excluding a few [3] which either hang or keep looping)
> the numbers for aufs on loop devices on v5.4-based Ubuntu kernel
> show a relatively good starting base in terms of exercising code:
>
>   - Ran: 645 tests
>   - Not run: 483 tests
>   - Failures: 21 tests

I'd be interested to know the stats for the overlay/* tests.

>
> So, hopefully this may be a starting point as an aufs test suite.
>
> [1] https://sourceforge.net/p/aufs/mailman/message/36918721/
> [2] https://sourceforge.net/p/aufs/mailman/message/36918932/
> [3] Steps:
>
>   $ export OVL_ALT_FSTYP=aufs
>   $ export FSTYP=ext4
>   $ export TEST_DEV=/dev/loop0
>   $ export TEST_DIR=/mnt/test
>   $ export SCRATCH_DEV=/dev/loop1
>   $ export SCRATCH_MNT=/mnt/scratch
>
>   $ sudo mkfs.$FSTYP -F $TEST_DEV
>   $ sudo mkfs.$FSTYP -F $SCRATCH_DEV
>   $ sudo mkdir $TEST_DIR $SCRATCH_MNT
>
>   $ cat <<EOF >/tmp/exclude-tests
>   generic/013
>   generic/070
>   generic/075
>   generic/112
>   generic/127
>   generic/461
>   generic/476
>   generic/522
>   generic/530
>   overlay/019
>   EOF
>
>   $ sudo -E ./check -overlay -E /tmp/exclude-tests
> ---
>  common/overlay | 6 ++++++
>  common/rc      | 4 ++++
>  2 files changed, 10 insertions(+)
>
> diff --git a/common/overlay b/common/overlay
> index 65c639e9c6d8..3b3351ed040e 100644
> --- a/common/overlay
> +++ b/common/overlay
> @@ -20,6 +20,12 @@ _overlay_mount_dirs()
>         local workdir=$3
>         shift 3
>
> +       if [ -n "$OVL_ALT_FSTYP" -a "$OVL_ALT_FSTYP" = "aufs" ]; then
> +               $MOUNT_PROG -t aufs -o br=$upperdir=rw:$lowerdir=ro \
> +                       `_common_dev_mount_options $*`
> +               return $?
> +       fi
> +
>         $MOUNT_PROG -t overlay -o lowerdir=$lowerdir -o upperdir=$upperdir \
>                     -o workdir=$workdir `_common_dev_mount_options $*`

I think it would be better to define (in common/config):

export OVL_FSTYP=${OVL_FSTYP:="overlay"}

And make sure to always mount -t $OVL_FSTYP
then you won't need to check if  OVL_ALT_FSTYP is non empty.
and setting OVL_FSTYP to "fuse.overlay" should mostly work.

I did find 5 overlay tests that do mount -t overlay not via any
of the common helpers, so you'll need to handle those, possibly
with another common helper that supports middle layers:
tests/overlay/011
tests/overlay/035
tests/overlay/052
tests/overlay/053
tests/overlay/062

Thanks,
Amir.



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux