* [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper @ 2016-09-01 5:06 Eryu Guan 2016-09-01 5:06 ` [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set Eryu Guan 2016-09-07 22:43 ` [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Dave Chinner 0 siblings, 2 replies; 4+ messages in thread From: Eryu Guan @ 2016-09-01 5:06 UTC (permalink / raw) To: fstests; +Cc: Eryu Guan Introduce a new _overlay_mount_dirs() helper to do the actual overlay mount operation and factor _overlay_scratch_mount and _overlay_mount code to use a single implemention of _overlay_mount_dirs(). Also convert all bare mount of overlay in tests to use it. Suggested-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com> --- v3: - mount with SELINUX_MOUNT_OPTIONS in _overlay_mount_dirs common/rc | 21 +++++++++++++++------ tests/overlay/005 | 5 +---- tests/overlay/010 | 5 ++--- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/common/rc b/common/rc index 04039a4..899bef4 100644 --- a/common/rc +++ b/common/rc @@ -266,6 +266,18 @@ _scratch_mount_options() $SCRATCH_DEV $SCRATCH_MNT } +# helper function to do the actual overlayfs mount operation +_overlay_mount_dirs() +{ + local lowerdir=$1 + local upperdir=$2 + local workdir=$3 + shift 3 + + $MOUNT_PROG -t overlay -o lowerdir=$lowerdir -o upperdir=$upperdir \ + -o workdir=$workdir $* +} + # Given a dir, set up 3 subdirectories and mount on the given mnt. # The dir is used as the mount device so it can be seen from df or mount _overlay_mount() @@ -293,12 +305,9 @@ _overlay_mount() mkdir -p $dir/$OVERLAY_LOWER_DIR mkdir -p $dir/$OVERLAY_WORK_DIR - $MOUNT_PROG -t overlay $SELINUX_MOUNT_OPTIONS \ - -o lowerdir=$dir/$OVERLAY_LOWER_DIR \ - -o upperdir=$dir/$OVERLAY_UPPER_DIR \ - -o workdir=$dir/$OVERLAY_WORK_DIR \ - $OVERLAY_MOUNT_OPTIONS $* \ - $dir $mnt + _overlay_mount_dirs $dir/$OVERLAY_LOWER_DIR $dir/$OVERLAY_UPPER_DIR \ + $dir/$OVERLAY_WORK_DIR $OVERLAY_MOUNT_OPTIONS \ + $SELINUX_MOUNT_OPTIONS $* $dir $mnt } _overlay_test_mount() diff --git a/tests/overlay/005 b/tests/overlay/005 index 495e7b5..baadb69 100755 --- a/tests/overlay/005 +++ b/tests/overlay/005 @@ -93,10 +93,7 @@ $XFS_IO_PROG -f -c "truncate 48m" ${lowerd}/test_file \ >>$seqres.full 2>&1 # mount new overlayfs -$MOUNT_PROG -t overlay $SELINUX_MOUNT_OPTIONS \ - -o lowerdir=$lowerd -o upperdir=$upperd \ - -o workdir=$workd \ - $SCRATCH_DEV $SCRATCH_MNT +_overlay_mount_dirs $lowerd $upperd $workd $SCRATCH_DEV $SCRATCH_MNT # the open call triggers copy-up and it will fail ENOSPC $XFS_IO_PROG -f -c "o" ${SCRATCH_MNT}/test_file \ diff --git a/tests/overlay/010 b/tests/overlay/010 index 5d1c2bd..a302d74 100755 --- a/tests/overlay/010 +++ b/tests/overlay/010 @@ -67,9 +67,8 @@ touch $lowerdir1/testdir/a $lowerdir1/testdir/b mknod $lowerdir2/testdir/a c 0 0 # Mount overlayfs and remove testdir, which led to kernel crash -$MOUNT_PROG -t overlay -o lowerdir=$lowerdir2:$lowerdir1 \ - -o upperdir=$upperdir,workdir=$workdir \ - $SCRATCH_DEV $SCRATCH_MNT +_overlay_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir \ + $SCRATCH_DEV $SCRATCH_MNT rm -rf $SCRATCH_MNT/testdir # success, all done -- 2.7.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set 2016-09-01 5:06 [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Eryu Guan @ 2016-09-01 5:06 ` Eryu Guan 2016-09-07 22:43 ` Dave Chinner 2016-09-07 22:43 ` [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Dave Chinner 1 sibling, 1 reply; 4+ messages in thread From: Eryu Guan @ 2016-09-01 5:06 UTC (permalink / raw) To: fstests; +Cc: Eryu Guan 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". Signed-off-by: Eryu Guan <eguan@redhat.com> --- v3: - replace mounted device "none" by $SCRATCH_DEV v2: - use _overlay_mount_dirs helper to do the overlay mount - use _scratch_unmount instead of raw $UMOUNT_PROG - remove unused _require_attrs tests/overlay/014 | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/overlay/014.out | 3 ++ tests/overlay/group | 1 + 3 files changed, 98 insertions(+) create mode 100755 tests/overlay/014 create mode 100644 tests/overlay/014.out diff --git a/tests/overlay/014 b/tests/overlay/014 new file mode 100755 index 0000000..36d7077 --- /dev/null +++ b/tests/overlay/014 @@ -0,0 +1,94 @@ +#! /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 +. ./common/attr + +# remove previous $seqres.full before test +rm -f $seqres.full + +# real QA test starts here +_supported_fs overlay +_supported_os Linux +_require_test +_require_scratch + +# Remove all files from previous tests +_scratch_mkfs + +# Create multiple lowerdirs and upperdir, workdir, and testdir on lowerdir +lowerdir1=$SCRATCH_DEV/lower1 +lowerdir2=$SCRATCH_DEV/lower2 +upperdir=$SCRATCH_DEV/upper +workdir=$SCRATCH_DEV/workdir +mkdir -p $lowerdir1 $lowerdir2 $upperdir $workdir +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 $workdir $SCRATCH_DEV $SCRATCH_MNT +rm -rf $SCRATCH_MNT/testdir +mkdir -p $SCRATCH_MNT/testdir/visibledir +_scratch_unmount + +# 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 \ + $SCRATCH_DEV $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. +_scratch_unmount +_overlay_mount_dirs "$lowerdir2:$lowerdir1" $upperdir $workdir \ + $SCRATCH_DEV $SCRATCH_MNT +ls $SCRATCH_MNT/testdir + +# success, all done +status=0 +exit diff --git a/tests/overlay/014.out b/tests/overlay/014.out new file mode 100644 index 0000000..ec09c4d --- /dev/null +++ b/tests/overlay/014.out @@ -0,0 +1,3 @@ +QA output created by 014 +visibledir +visiblefile diff --git a/tests/overlay/group b/tests/overlay/group index 5c80566..71eaadb 100644 --- a/tests/overlay/group +++ b/tests/overlay/group @@ -16,3 +16,4 @@ 011 auto quick 012 auto quick 013 auto quick +014 auto quick copyup -- 2.7.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set 2016-09-01 5:06 ` [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set Eryu Guan @ 2016-09-07 22:43 ` Dave Chinner 0 siblings, 0 replies; 4+ messages in thread From: Dave Chinner @ 2016-09-07 22:43 UTC (permalink / raw) To: Eryu Guan; +Cc: fstests On Thu, Sep 01, 2016 at 01:06:24PM +0800, Eryu Guan wrote: > 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". > > Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper 2016-09-01 5:06 [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Eryu Guan 2016-09-01 5:06 ` [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set Eryu Guan @ 2016-09-07 22:43 ` Dave Chinner 1 sibling, 0 replies; 4+ messages in thread From: Dave Chinner @ 2016-09-07 22:43 UTC (permalink / raw) To: Eryu Guan; +Cc: fstests On Thu, Sep 01, 2016 at 01:06:23PM +0800, Eryu Guan wrote: > Introduce a new _overlay_mount_dirs() helper to do the actual > overlay mount operation and factor _overlay_scratch_mount and > _overlay_mount code to use a single implemention of > _overlay_mount_dirs(). Also convert all bare mount of overlay in > tests to use it. > > Suggested-by: Dave Chinner <dchinner@redhat.com> > Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> -- Dave Chinner david@fromorbit.com ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-09-07 22:43 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-01 5:06 [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Eryu Guan 2016-09-01 5:06 ` [PATCH v3 2/2] overlay: copy-up lowerdir which has opaque xattr set Eryu Guan 2016-09-07 22:43 ` Dave Chinner 2016-09-07 22:43 ` [PATCH v3 1/2] common/rc: introduce _overlay_mount_dirs helper Dave Chinner
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.