From: Vivek Goyal Date: Wed, 30 Jan 2019 18:59:37 +0000 (-0500) Subject: overlay: Do not lose security.capability xattr over metadata only file copy-up X-Git-Tag: v2022.05.01~1276 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ebc6c083d3bcfd813202d4d743021e44a899f15e;p=xfstests-dev.git 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. Signed-off-by: Vivek Goyal Reviewed-by: Amir Goldstein Signed-off-by: Eryu Guan --- diff --git a/tests/overlay/064 b/tests/overlay/064 index b8d3915d..a913b146 100755 --- a/tests/overlay/064 +++ b/tests/overlay/064 @@ -34,26 +34,38 @@ _supported_os Linux _require_scratch _require_command "$SETCAP_PROG" setcap _require_command "$GETCAP_PROG" getcap +_require_scratch_overlay_features metacopy # Remove all files from previous tests _scratch_mkfs # Create test file lowerdir=${OVL_BASE_SCRATCH_MNT}/${OVL_LOWER} -echo "This is lower" >> ${lowerdir}/file +echo "This is lower1" >> ${lowerdir}/file1 +echo "This is lower2" >> ${lowerdir}/file2 # set setuid bit -$SETCAP_PROG cap_setuid+ep ${lowerdir}/file +$SETCAP_PROG cap_setuid+ep ${lowerdir}/file1 +$SETCAP_PROG cap_setuid+ep ${lowerdir}/file2 -_scratch_mount +_scratch_mount "-o metacopy=on" # Trigger file copy up without actually writing anything to file. This # requires opening file with WRITE and xfs_io opens file with # O_RDWR by default. -$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file >>$seqres.full +$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file1 >>$seqres.full # Make sure cap_setuid is still there -$GETCAP_PROG ${SCRATCH_MNT}/file | _filter_scratch +$GETCAP_PROG ${SCRATCH_MNT}/file1 | _filter_scratch + +# Trigger metadata only copy-up +chmod 000 ${SCRATCH_MNT}/file2 + +# Trigger data copy-up +$XFS_IO_PROG -c "stat" ${SCRATCH_MNT}/file2 >>$seqres.full + +# Make sure cap_setuid is still there +$GETCAP_PROG ${SCRATCH_MNT}/file2 | _filter_scratch # success, all done status=0 diff --git a/tests/overlay/064.out b/tests/overlay/064.out index 7ae2244e..cdd3064d 100644 --- a/tests/overlay/064.out +++ b/tests/overlay/064.out @@ -1,2 +1,3 @@ QA output created by 064 -SCRATCH_MNT/file = cap_setuid+ep +SCRATCH_MNT/file1 = cap_setuid+ep +SCRATCH_MNT/file2 = cap_setuid+ep