mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
overlay: create helper _overlay_scratch_mount_dirs()
A helper to mount with same options/mnt/dev of scratch mount, but optionally with different lower/upper/work dirs. use instead of _overlay_mount_dirs() in all tests where applicable. Signed-off-by: Amir Goldstein <amir73il@gmail.com> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
committed by
Eryu Guan
parent
510ea29201
commit
371f7f52f2
@@ -345,6 +345,19 @@ _overlay_mount_dirs()
|
||||
-o workdir=$workdir `_common_dev_mount_options $*`
|
||||
}
|
||||
|
||||
# Mount with same options/mnt/dev of scratch mount, but optionally
|
||||
# with different lower/upper/work dirs
|
||||
_overlay_scratch_mount_dirs()
|
||||
{
|
||||
local lowerdir=$1
|
||||
local upperdir=$2
|
||||
local workdir=$3
|
||||
shift 3
|
||||
|
||||
_overlay_mount_dirs $lowerdir $upperdir $workdir \
|
||||
$* $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
}
|
||||
|
||||
_overlay_mkdirs()
|
||||
{
|
||||
local dir=$1
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ $XFS_IO_PROG -f -c "truncate 48m" ${lowerd}/test_file \
|
||||
>>$seqres.full 2>&1
|
||||
|
||||
# mount new overlayfs
|
||||
_overlay_mount_dirs $lowerd $upperd $workd $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lowerd $upperd $workd
|
||||
|
||||
# the open call triggers copy-up and it will fail ENOSPC
|
||||
$XFS_IO_PROG -f -c "o" ${SCRATCH_MNT}/test_file \
|
||||
|
||||
+1
-2
@@ -67,8 +67,7 @@ touch $lowerdir1/testdir/a $lowerdir1/testdir/b
|
||||
mknod $lowerdir2/testdir/a c 0 0
|
||||
|
||||
# Mount overlayfs and remove testdir, which led to kernel crash
|
||||
_overlay_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir
|
||||
rm -rf $SCRATCH_MNT/testdir
|
||||
|
||||
# success, all done
|
||||
|
||||
+3
-5
@@ -72,7 +72,7 @@ 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
|
||||
_overlay_scratch_mount_dirs $lowerdir1 $lowerdir2 $workdir2
|
||||
rm -rf $SCRATCH_MNT/testdir
|
||||
mkdir -p $SCRATCH_MNT/testdir/visibledir
|
||||
# unmount overlayfs but not base fs
|
||||
@@ -81,15 +81,13 @@ $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
|
||||
_overlay_scratch_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir
|
||||
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
|
||||
_overlay_scratch_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir
|
||||
ls $SCRATCH_MNT/testdir
|
||||
|
||||
# success, all done
|
||||
|
||||
+5
-6
@@ -51,7 +51,7 @@ create_whiteout()
|
||||
mkdir -p $lower/testdir
|
||||
touch $lower/testdir/$file
|
||||
|
||||
_overlay_mount_dirs $lower $upper $work $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lower $upper $work
|
||||
|
||||
rm -f $SCRATCH_MNT/testdir/$file
|
||||
|
||||
@@ -91,7 +91,7 @@ create_whiteout $lowerdir1 $upperdir $workdir $testfile1
|
||||
# whiteout will expose.
|
||||
rm -rf $lowerdir1/testdir
|
||||
|
||||
_overlay_mount_dirs $lowerdir1 $upperdir $workdir $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lowerdir1 $upperdir $workdir
|
||||
|
||||
ls $SCRATCH_MNT/testdir
|
||||
|
||||
@@ -104,7 +104,7 @@ rm -rf $SCRATCH_MNT/testdir 2>&1 | _filter_scratch
|
||||
$UMOUNT_PROG $SCRATCH_MNT
|
||||
touch $lowerdir1/testdir
|
||||
|
||||
_overlay_mount_dirs $lowerdir1 $upperdir $workdir $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lowerdir1 $upperdir $workdir
|
||||
|
||||
# try to remove test dir from overlay dir, trigger ovl_remove_and_whiteout,
|
||||
# it will not clean up the dir and lead to residue.
|
||||
@@ -121,8 +121,7 @@ create_whiteout $lowerdir2 $lowerdir1 $workdir1 $testfile1
|
||||
|
||||
rm -rf $lowerdir2/testdir
|
||||
|
||||
_overlay_mount_dirs "$lowerdir1:$lowerdir2" $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs "$lowerdir1:$lowerdir2" $upperdir $workdir
|
||||
|
||||
ls $SCRATCH_MNT/testdir
|
||||
rm -rf $SCRATCH_MNT/testdir 2>&1 | _filter_scratch
|
||||
@@ -139,7 +138,7 @@ rm -rf $lowerdir1/testdir/$testfile1
|
||||
|
||||
create_whiteout $lowerdir2 $lowerdir1 $workdir1 $testfile2
|
||||
|
||||
_overlay_mount_dirs $lowerdir1 $upperdir $workdir $OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lowerdir1 $upperdir $workdir
|
||||
|
||||
ls $SCRATCH_MNT/testdir
|
||||
rm -rf $SCRATCH_MNT/testdir 2>&1 | _filter_scratch
|
||||
|
||||
+1
-2
@@ -77,8 +77,7 @@ $CHATTR_PROG +i $workdir
|
||||
|
||||
# Mount overlay with upper and workdir and expect failure to re-create workdir.
|
||||
# Verify that overlay is mounted read-only and that it cannot be remounted rw.
|
||||
_overlay_mount_dirs $lowerdir2 $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs $lowerdir2 $upperdir $workdir
|
||||
touch $SCRATCH_MNT/bar 2>&1 | _filter_scratch
|
||||
_scratch_remount rw 2>&1 | _filter_scratch
|
||||
|
||||
|
||||
+6
-8
@@ -71,23 +71,21 @@ mkdir -p $lowerdir $lowerdir2 $upperdir $upperdir2 $workdir
|
||||
|
||||
# Mount overlay with lowerdir, upperdir, workdir and index=on
|
||||
# to store the file handles of lowerdir and upperdir in overlay.origin xattr
|
||||
_overlay_mount_dirs $lowerdir $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT -oindex=on
|
||||
_overlay_scratch_mount_dirs $lowerdir $upperdir $workdir -oindex=on
|
||||
$UMOUNT_PROG $SCRATCH_MNT
|
||||
|
||||
# Try to mount an overlay with the same upperdir and different lowerdir - expect ESTALE
|
||||
_overlay_mount_dirs $lowerdir2 $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT -oindex=on 2>&1 | _filter_scratch
|
||||
_overlay_scratch_mount_dirs $lowerdir2 $upperdir $workdir -oindex=on \
|
||||
2>&1 | _filter_scratch
|
||||
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
|
||||
|
||||
# Try to mount an overlay with the same workdir and different upperdir - expect ESTALE
|
||||
_overlay_mount_dirs $lowerdir $upperdir2 $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT -oindex=on 2>&1 | _filter_scratch
|
||||
_overlay_scratch_mount_dirs $lowerdir $upperdir2 $workdir -oindex=on \
|
||||
2>&1 | _filter_scratch
|
||||
$UMOUNT_PROG $SCRATCH_MNT 2>/dev/null
|
||||
|
||||
# Mount overlay with original lowerdir, upperdir, workdir and index=on - expect success
|
||||
_overlay_mount_dirs $lowerdir $upperdir $workdir \
|
||||
$OVL_BASE_SCRATCH_MNT $SCRATCH_MNT -oindex=on
|
||||
_overlay_scratch_mount_dirs $lowerdir $upperdir $workdir -oindex=on
|
||||
|
||||
# success, all done
|
||||
status=0
|
||||
|
||||
+1
-2
@@ -174,8 +174,7 @@ mkdir -p $workdir
|
||||
mkdir -p $middir/test_dir
|
||||
mkdir -p $lowerdir/test_dir/pure_lower_dir
|
||||
|
||||
$MOUNT_PROG -t overlay overlay -o lowerdir=$middir:$lowerdir \
|
||||
-o upperdir=$upperdir -o workdir=$workdir $SCRATCH_MNT
|
||||
_overlay_scratch_mount_dirs "$middir:$lowerdir" $upperdir $workdir
|
||||
|
||||
# Copy up test_dir
|
||||
touch $SCRATCH_MNT/test_dir/test_file
|
||||
|
||||
Reference in New Issue
Block a user