From: Alexander Larsson <alexl@xxxxxxxxxx> We now support xattr of overlayfs.* xattrs, so check that either both set and get work, or neither. Signed-off-by: Alexander Larsson <alexl@xxxxxxxxxx> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> --- Zorro, This test is failing since overlayfs merge for v6.7-rc1, because it encodes an expectation that set/get of private overlay.* xattrs should fail. This expectation is no longer correct for new kernel, so Alex has fixed the test to expect consistent behavior of set/get of private overlay.* xattrs. We have some new tests for features merged for v6.7-rc1, but this fix has higher priority, so sending it early. Thanks, Amir. tests/overlay/026 | 35 +++++++++++++++++++++++++---------- tests/overlay/026.out | 2 -- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/tests/overlay/026 b/tests/overlay/026 index 77030d20..f71b3f13 100755 --- a/tests/overlay/026 +++ b/tests/overlay/026 @@ -57,21 +57,36 @@ $SETFATTR_PROG -n "trusted.overlayfsrz" -v "n" \ _getfattr --absolute-names -n "trusted.overlayfsrz" \ $SCRATCH_MNT/testf0 2>&1 | _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 both "Operation not {supported,permitted}" and +# "No such attribute" as pass for getattr to support all kernel +# version. However, the setfattr result must match getattr. # -$SETFATTR_PROG -n "trusted.overlay.fsz" -v "n" \ - $SCRATCH_MNT/testf1 2>&1 | _filter_scratch | \ - sed -e 's/permitted/supported/g' -_getfattr --absolute-names -n "trusted.overlay.fsz" \ +getres=$(_getfattr --absolute-names -n "trusted.overlay.fsz" \ + $SCRATCH_MNT/testf1 2>&1 | _filter_scratch) + +supported=n +if [[ "$getres" =~ "No such attribute" ]]; then + supported=y +else + [[ "$getres" =~ Operation\ not\ (supported|permitted) ]] || echo unexpected getattr result: $getres +fi + +setres=$($SETFATTR_PROG -n "trusted.overlay.fsz" -v "n" \ $SCRATCH_MNT/testf1 2>&1 | _filter_scratch | \ - sed -e 's/permitted/supported/g' + sed -e 's/permitted/supported/g') + +if [ $supported == 'y' ]; then + [[ "$setres" == "" ]] || echo unexpected setattr result: $setres +else + [[ "$setres" =~ "Operation not supported" ]] || 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