Files
apfstests/tests/overlay/014
T
Amir Goldstein 5052c432b5 overlay/014: correct comment relating to workdir reuse
Clarification: EBUSY is what you get when trying to use the same
upperdir/workdir with two different *concurent* overlayfs mounts.
The EBUSY case is independent of the inodes index feature.

This is not the case in this test, but rather the case of trying to
reuse the same workdir with different upper dirs on *subsequent*
overlayfs mounts.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-09-20 11:49:18 +08:00

98 lines
3.2 KiB
Bash
Executable File

#! /bin/bash
# FS QA Test 014
#
# Test copy-up of lowerdir with opaque xattr set.
#
# When copying up a directory with opaque xattr set, the xattr was copied up as
# well, after a remount the opaque flag is honored so the copied-up directory
# is treated as opaque, which causes files created in the lowerdir to be hidden
# when using multiple lower directories.
#
# This is fixed by "ovl: don't copy up opaqueness".
#
#-----------------------------------------------------------------------
# Copyright (c) 2016 Red Hat Inc. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#-----------------------------------------------------------------------
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
_supported_fs overlay
_supported_os Linux
_require_scratch
# Remove all files from previous tests
_scratch_mkfs
# Create multiple lowerdirs and upperdir, workdir, and testdir on lowerdir
lowerdir1=$OVL_BASE_SCRATCH_MNT/lower1
lowerdir2=$OVL_BASE_SCRATCH_MNT/lower2
upperdir=$OVL_BASE_SCRATCH_MNT/upper
workdir=$OVL_BASE_SCRATCH_MNT/workdir
# When overlay inode index feature is enabled, a workdir cannot be reused
# with a different upperdir. workdir2 in this test is used as the workdir
# when lowerdir2 is used as the upperdir.
workdir2=$OVL_BASE_SCRATCH_MNT/workdir2
mkdir -p $lowerdir1 $lowerdir2 $upperdir $workdir $workdir2
mkdir -p $lowerdir1/testdir/d
# mount overlay with $lowerdir2 as upperdir, and remove & recreate testdir,
# make testdir on $lowerdir2 opaque
_overlay_mount_dirs $lowerdir1 $lowerdir2 $workdir2 $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
rm -rf $SCRATCH_MNT/testdir
mkdir -p $SCRATCH_MNT/testdir/visibledir
# unmount overlayfs but not base fs
$UMOUNT_PROG $SCRATCH_MNT
# mount overlay again, with lowerdir1 and lowerdir2 as multiple lowerdirs,
# and create a new file in testdir, triggers copyup from lowerdir,
# copyup should not copy overlayfs private xattr
_overlay_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir \
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
touch $SCRATCH_MNT/testdir/visiblefile
# umount and mount overlay again, buggy kernel treats the copied-up dir as
# opaque, visibledir is not seen in merged dir.
$UMOUNT_PROG $SCRATCH_MNT
_overlay_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir \
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
ls $SCRATCH_MNT/testdir
# success, all done
status=0
exit