On Wed, Nov 22, 2023 at 05:20:13PM +0200, Amir Goldstein wrote: > From: Alexander Larsson <alexl@xxxxxxxxxx> > > The test checks the expectaion from old kernels that set/get of > trusted.overlay.* xattrs is not supported on an overlayfs filesystem. > > New kernels support set/get xattr of trusted.overlay.* xattrs, so adapt > the test to check that either both set and get work on new kernel, or > neither work on old kernel. > > Signed-off-by: Alexander Larsson <alexl@xxxxxxxxxx> > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > > Zorro, > > Per your request on v1 [1], I've added a helper to check escaped overlay > xattrs support. > > The helper was taken from the patch that adds test overlay/084 [2], and > re-factored, but other than that, overlay/084 itself is unchanged, so > I am not re-posting it nor any of the other patches in the overlay tests > for v6.7-rc1. > > Let me know if this works for you. > > Thanks, > Amir. > > [1] https://lore.kernel.org/fstests/20231116075250.ntopaswush4sn2qf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ > [2] https://lore.kernel.org/fstests/20231114064857.1666718-2-amir73il@xxxxxxxxx/ > > common/overlay | 19 +++++++++++++++++++ > tests/overlay/026 | 42 +++++++++++++++++++++++++++++------------- > tests/overlay/026.out | 2 -- > 3 files changed, 48 insertions(+), 15 deletions(-) > > diff --git a/common/overlay b/common/overlay > index 7004187f..8f275228 100644 > --- a/common/overlay > +++ b/common/overlay > @@ -201,6 +201,25 @@ _require_scratch_overlay_features() > _scratch_unmount > } > > +_check_scratch_overlay_xattr_escapes() > +{ > + local testfile=$1 > + > + touch $testfile > + ! ($GETFATTR_PROG -n trusted.overlay.foo $testfile 2>&1 | grep -E -q "not (permitted|supported)") > +} > + > +_require_scratch_overlay_xattr_escapes() > +{ > + _scratch_mkfs > /dev/null 2>&1 > + _scratch_mount > + > + _check_scratch_overlay_xattr_escapes $SCRATCH_MNT/file || \ > + _notrun "xattr escaping is not supported by overlay" > + > + _scratch_unmount > +} > + Hi Amir, Sorry for this late review, got a little busy on other things recently. Won't this patch be conflict with another patchset which you/Alex have sent: https://lore.kernel.org/fstests/20231114064857.1666718-2-amir73il@xxxxxxxxx/ So you'll rebase that patchset on this, right? Thanks, Zorro > _require_scratch_overlay_verity() > { > local lowerdirs="$OVL_BASE_SCRATCH_MNT/$OVL_UPPER:$OVL_BASE_SCRATCH_MNT/$OVL_LOWER" > diff --git a/tests/overlay/026 b/tests/overlay/026 > index 77030d20..25c70bc8 100755 > --- a/tests/overlay/026 > +++ b/tests/overlay/026 > @@ -52,26 +52,42 @@ touch $SCRATCH_MNT/testf1 > # getfattr ok no attr ok ok > # > $SETFATTR_PROG -n "trusted.overlayfsrz" -v "n" \ > - $SCRATCH_MNT/testf0 2>&1 | _filter_scratch > + $SCRATCH_MNT/testf0 2>&1 | tee -a $seqres.full | _filter_scratch > > _getfattr --absolute-names -n "trusted.overlayfsrz" \ > - $SCRATCH_MNT/testf0 2>&1 | _filter_scratch > + $SCRATCH_MNT/testf0 2>&1 | tee -a $seqres.full | _filter_scratch > > -# {s,g}etfattr of "trusted.overlay.xxx" should fail. > +# {s,g}etfattr of "trusted.overlay.xxx" fail on older kernels > # The errno returned varies among kernel versions, > -# v4.3/7 v4.8-rc1 v4.8 v4.10 > -# setfattr not perm not perm not perm not supp > -# getfattr no attr no attr not perm not supp > +# v4.3/7 v4.8-rc1 v4.8 v4.10 v6.7 > +# setfattr not perm not perm not perm not supp ok > +# getfattr no attr no attr not perm not supp ok > # > -# Consider "Operation not {supported,permitted}" pass. > +# Consider "Operation not {supported,permitted}" pass for old kernels. > # > -$SETFATTR_PROG -n "trusted.overlay.fsz" -v "n" \ > - $SCRATCH_MNT/testf1 2>&1 | _filter_scratch | \ > - sed -e 's/permitted/supported/g' > +if _check_scratch_overlay_xattr_escapes $SCRATCH_MNT/testf0; then > + setexp="" > + getexp="No such attribute" > +else > + setexp="Operation not supported" > + getexp="Operation not supported" > +fi > > -_getfattr --absolute-names -n "trusted.overlay.fsz" \ > - $SCRATCH_MNT/testf1 2>&1 | _filter_scratch | \ > - sed -e 's/permitted/supported/g' > +getres=$(_getfattr --absolute-names -n "trusted.overlay.fsz" \ > + $SCRATCH_MNT/testf1 2>&1 | tee -a $seqres.full | _filter_scratch | \ > + sed 's/permitted/supported/') > + > +[[ "$getres" =~ "$getexp" ]] || echo unexpected getattr result: $getres > + > +setres=$($SETFATTR_PROG -n "trusted.overlay.fsz" -v "n" \ > + $SCRATCH_MNT/testf1 2>&1 | tee -a $seqres.full |_filter_scratch | \ > + sed -e 's/permitted/supported/g') > + > +if [ "$setexp" ]; then > + [[ "$setres" =~ "$expres" ]] || echo unexpected setattr result: $setres > +else > + [[ "$setres" == "" ]] || echo unexpected setattr result: $setres > +fi > > # success, all done > status=0 > diff --git a/tests/overlay/026.out b/tests/overlay/026.out > index c4572d67..53030009 100644 > --- a/tests/overlay/026.out > +++ b/tests/overlay/026.out > @@ -2,5 +2,3 @@ QA output created by 026 > # file: SCRATCH_MNT/testf0 > trusted.overlayfsrz="n" > > -setfattr: SCRATCH_MNT/testf1: Operation not supported > -SCRATCH_MNT/testf1: trusted.overlay.fsz: Operation not supported > -- > 2.34.1 >