xfstests: overlay: Do not lose security.capability xattr over metadata only file copy-up
PATCH 1/1 xfstests: overlay: Do not lose security.capability xattr over metadata only file copy-up
Extend test 064 to check security.capability xattr is not lost over copy-up of a metadata only file. This requires mounting overlay with option metacopy=on and first trigger metadata only copy-up and then trigger data copy-up.
--- tests/overlay/064 | 18 ++++++++++++++++++ tests/overlay/064.out | 1 + 2 files changed, 19 insertions(+)
tests/overlay/064 +18 -0
@@ -55,6 +55,24 @@ $XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/fi # Make sure cap_setuid is still there $GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch +# Test copy-up with metacopy on. +$UMOUNT_PROG $SCRATCH_MNT +_scratch_mkfs +echo "This is lower" >> ${lowerdir}/file + +# Set CAP_SETUID +$SETCAP_PROG cap_setuid+ep ${lowerdir}/file +_scratch_mount "-o metacopy=on" + +# Trigger metadata only copy-up +chmod 000 ${SCRATCH_MNT}/file + +# Trigger data copy-up +$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file >>$seqres.full + +# Make sure cap_setuid is still there +$GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch + # success, all done status=0 exit
tests/overlay/064.out +1 -0
@@ -1,2 +1,3 @@ QA output created by 064 SCRATCH_MNT/file = cap_setuid+ep +SCRATCH_MNT/file = cap_setuid+ep
Quoted 6 lines · Vivek Goyal
Extend test 064 to check security.capability xattr is not lost over copy-up of a metadata only file. This requires mounting overlay with option metacopy=on and first trigger metadata only copy-up and then trigger data copy-up.
I'm ok with extending the test, but it is not done right.
For using metacopy=on you need:
_require_scratch_overlay_features metacopy, so test will be skipped on kernel < 4.19, but then the existing test case won't run on old kernels. That is fine (I guess?) because the bug was introduced by metacopy patches anyway.
So instead of repeating the test, I suggest to mount overlay with metacopy=on to begin with and have 2 test files. One gets metacopied and then both get data copied.
Thanks,
Amir.
Quoted 43 lines
Signed-off-by Vivek Goyal <[email protected]>--- tests/overlay/064 | 18 ++++++++++++++++++ tests/overlay/064.out | 1 + 2 files changed, 19 insertions(+)Index: xfstests-dev/tests/overlay/064
===================================================================tests/overlay/064 2019-01-30 11:18:29.595591985 -0500 renamed from tests/overlay/064 2019-01-28 15:03:12.590434802 -0500 +18
-0@@ -55,6 +55,24 @@ $XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/fi # Make sure cap_setuid is still there $GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch +# Test copy-up with metacopy on. +$UMOUNT_PROG $SCRATCH_MNT +_scratch_mkfs +echo "This is lower" >> ${lowerdir}/file + +# Set CAP_SETUID +$SETCAP_PROG cap_setuid+ep ${lowerdir}/file +_scratch_mount "-o metacopy=on" + +# Trigger metadata only copy-up +chmod 000 ${SCRATCH_MNT}/file + +# Trigger data copy-up +$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file >>$seqres.full + +# Make sure cap_setuid is still there +$GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch + # success, all done status=0 exitIndex: xfstests-dev/tests/overlay/064.out
===================================================================tests/overlay/064.out 2019-01-30 11:21:11.745591985 -0500 renamed from tests/overlay/064.out 2019-01-28 15:03:12.590434802 -0500 +1
-0@@ -1,2 +1,3 @@ QA output created by 064 SCRATCH_MNT/file = cap_setuid+ep +SCRATCH_MNT/file = cap_setuid+ep