Files
apfstests/062.out
T
Eric Sandeen 99102d6247 xfstests 062: Also accept "no such attribute" errors for invalid extended attributes
In older Linux kernels, requesting an extended attribute which cannot exist
failed with EPERM.  In version 3.0, this was changed to ENODATA so that
programs can distinguish between missing attributes and permission problems
independent of the file type.

For example, lgetxattr("file", "user.name", NULL, 0) will now return ENODATA if
no such attribute exists even if "file" is a symbolic link.

In test 062, to make it work on kernels before and after 3.0, accept either of
the two error results from getfattr.

Signed-off-by: Andreas Gruenbacher <agruen@kernel.org>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
2011-08-19 09:57:12 -05:00

655 lines
16 KiB
Plaintext

QA output created by 062
*** create test bed
SCRATCH_MNT
SCRATCH_MNT/dev
SCRATCH_MNT/dev/b
SCRATCH_MNT/dev/c
SCRATCH_MNT/dev/p
SCRATCH_MNT/dir
SCRATCH_MNT/lnk
SCRATCH_MNT/reg
=== TYPE reg; NAMESPACE user
*** set/get one initially empty attribute
# file: SCRATCH_MNT/reg
user.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/reg
user.name=0xbabe
user.name2=0xdeadbeef
user.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/reg
user.name=0sur4=
user.name2=0s3q2+7w==
user.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/reg
user.name=0xbabe
user.name2=0xdeaf
user.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/reg
user.name=0xbabe
user.name2=0xdecade
user.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/reg
user.name2
*** overwrite empty value
# file: SCRATCH_MNT/reg
user.name2=0xcafe
*** remove attribute
SCRATCH_MNT/reg: user.name2: No such attribute or operation not permitted
*** final list (strings, type=reg, nsp=user)
# file: SCRATCH_MNT/reg
user.name=0xbabe
user.name3=0xdeface
=== TYPE dir; NAMESPACE user
*** set/get one initially empty attribute
# file: SCRATCH_MNT/dir
user.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/dir
user.name=0xbabe
user.name2=0xdeadbeef
user.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/dir
user.name=0sur4=
user.name2=0s3q2+7w==
user.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/dir
user.name=0xbabe
user.name2=0xdeaf
user.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/dir
user.name=0xbabe
user.name2=0xdecade
user.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/dir
user.name2
*** overwrite empty value
# file: SCRATCH_MNT/dir
user.name2=0xcafe
*** remove attribute
SCRATCH_MNT/dir: user.name2: No such attribute or operation not permitted
*** final list (strings, type=dir, nsp=user)
# file: SCRATCH_MNT/dir
user.name=0xbabe
user.name3=0xdeface
=== TYPE lnk; NAMESPACE user
*** set/get one initially empty attribute
setfattr: SCRATCH_MNT/lnk: Operation not permitted
*** overwrite empty, set several new attributes
setfattr: SCRATCH_MNT/lnk: Operation not permitted
setfattr: SCRATCH_MNT/lnk: Operation not permitted
setfattr: SCRATCH_MNT/lnk: Operation not permitted
*** fetch several attribute names and values (hex)
*** fetch several attribute names and values (base64)
*** shrink value of an existing attribute
setfattr: SCRATCH_MNT/lnk: Operation not permitted
*** grow value of existing attribute
setfattr: SCRATCH_MNT/lnk: Operation not permitted
*** set an empty value for second attribute
setfattr: SCRATCH_MNT/lnk: Operation not permitted
SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
*** overwrite empty value
setfattr: SCRATCH_MNT/lnk: Operation not permitted
SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
*** remove attribute
setfattr: SCRATCH_MNT/lnk: Operation not permitted
SCRATCH_MNT/lnk: user.name2: No such attribute or operation not permitted
*** final list (strings, type=lnk, nsp=user)
=== TYPE dev/b; NAMESPACE user
*** set/get one initially empty attribute
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
*** overwrite empty, set several new attributes
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
*** fetch several attribute names and values (hex)
*** fetch several attribute names and values (base64)
*** shrink value of an existing attribute
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
*** grow value of existing attribute
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
*** set an empty value for second attribute
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
*** overwrite empty value
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
*** remove attribute
setfattr: SCRATCH_MNT/dev/b: Operation not permitted
SCRATCH_MNT/dev/b: user.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/b, nsp=user)
=== TYPE dev/c; NAMESPACE user
*** set/get one initially empty attribute
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
*** overwrite empty, set several new attributes
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
*** fetch several attribute names and values (hex)
*** fetch several attribute names and values (base64)
*** shrink value of an existing attribute
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
*** grow value of existing attribute
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
*** set an empty value for second attribute
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
*** overwrite empty value
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
*** remove attribute
setfattr: SCRATCH_MNT/dev/c: Operation not permitted
SCRATCH_MNT/dev/c: user.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/c, nsp=user)
=== TYPE dev/p; NAMESPACE user
*** set/get one initially empty attribute
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
*** overwrite empty, set several new attributes
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
*** fetch several attribute names and values (hex)
*** fetch several attribute names and values (base64)
*** shrink value of an existing attribute
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
*** grow value of existing attribute
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
*** set an empty value for second attribute
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
*** overwrite empty value
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
*** remove attribute
setfattr: SCRATCH_MNT/dev/p: Operation not permitted
SCRATCH_MNT/dev/p: user.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/p, nsp=user)
=== TYPE reg; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/reg
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/reg
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/reg
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/reg
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/reg: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=reg, nsp=trusted)
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
=== TYPE dir; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/dir
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/dir
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/dir
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/dir
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/dir: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=dir, nsp=trusted)
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
=== TYPE lnk; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/lnk
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/lnk
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/lnk
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/lnk
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/lnk: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=lnk, nsp=trusted)
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name3=0xdeface
=== TYPE dev/b; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/dev/b
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/dev/b
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/dev/b
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/dev/b
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/dev/b: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/b, nsp=trusted)
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name3=0xdeface
=== TYPE dev/c; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/dev/c
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/dev/c
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/dev/c
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/dev/c
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/dev/c: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/c, nsp=trusted)
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name3=0xdeface
=== TYPE dev/p; NAMESPACE trusted
*** set/get one initially empty attribute
# file: SCRATCH_MNT/dev/p
trusted.name
*** overwrite empty, set several new attributes
*** fetch several attribute names and values (hex)
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name2=0xdeadbeef
trusted.name3=0xdeface
*** fetch several attribute names and values (base64)
# file: SCRATCH_MNT/dev/p
trusted.name=0sur4=
trusted.name2=0s3q2+7w==
trusted.name3=0s3vrO
*** shrink value of an existing attribute
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name2=0xdeaf
trusted.name3=0xdeface
*** grow value of existing attribute
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name2=0xdecade
trusted.name3=0xdeface
*** set an empty value for second attribute
# file: SCRATCH_MNT/dev/p
trusted.name2
*** overwrite empty value
# file: SCRATCH_MNT/dev/p
trusted.name2=0xcafe
*** remove attribute
SCRATCH_MNT/dev/p: trusted.name2: No such attribute or operation not permitted
*** final list (strings, type=dev/p, nsp=trusted)
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name3=0xdeface
*** extend test bed
SCRATCH_MNT
SCRATCH_MNT/descend
SCRATCH_MNT/descend/and
SCRATCH_MNT/descend/down
SCRATCH_MNT/descend/down/here
SCRATCH_MNT/dev
SCRATCH_MNT/dev/b
SCRATCH_MNT/dev/c
SCRATCH_MNT/dev/p
SCRATCH_MNT/dir
SCRATCH_MNT/here
SCRATCH_MNT/here/up
SCRATCH_MNT/here/up/ascend
SCRATCH_MNT/lnk
SCRATCH_MNT/reg
*** directory descent with us following symlinks
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/here
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/here/up
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/here/up/ascend
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/descend
user.1=0x3233
user.x=0x797a
# file: SCRATCH_MNT/descend/down
user.1=0x3233
user.x=0x797a
# file: SCRATCH_MNT/descend/down/here
user.1=0x3233
user.x=0x797a
# file: SCRATCH_MNT/descend/and/ascend
trusted.9=0x3837
trusted.a=0x6263
*** directory descent without following symlinks
# file: SCRATCH_MNT/reg
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
# file: SCRATCH_MNT/dir
trusted.name=0xbabe
trusted.name3=0xdeface
user.name=0xbabe
user.name3=0xdeface
# file: SCRATCH_MNT/lnk
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/b
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/c
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/dev/p
trusted.name=0xbabe
trusted.name3=0xdeface
# file: SCRATCH_MNT/here
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/here/up
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/here/up/ascend
trusted.9=0x3837
trusted.a=0x6263
# file: SCRATCH_MNT/descend
user.1=0x3233
user.x=0x797a
# file: SCRATCH_MNT/descend/down
user.1=0x3233
user.x=0x797a
# file: SCRATCH_MNT/descend/down/here
user.1=0x3233
user.x=0x797a
*** backup everything
*** clear out the scratch device
*** reset test bed with no extended attributes
*** create test bed
SCRATCH_MNT
SCRATCH_MNT/dev
SCRATCH_MNT/dev/b
SCRATCH_MNT/dev/c
SCRATCH_MNT/dev/p
SCRATCH_MNT/dir
SCRATCH_MNT/lnk
SCRATCH_MNT/reg
*** extend test bed
SCRATCH_MNT
SCRATCH_MNT/descend
SCRATCH_MNT/descend/and
SCRATCH_MNT/descend/down
SCRATCH_MNT/descend/down/here
SCRATCH_MNT/dev
SCRATCH_MNT/dev/b
SCRATCH_MNT/dev/c
SCRATCH_MNT/dev/p
SCRATCH_MNT/dir
SCRATCH_MNT/here
SCRATCH_MNT/here/up
SCRATCH_MNT/here/up/ascend
SCRATCH_MNT/lnk
SCRATCH_MNT/reg
*** restore everything
*** compare before and after backups
*** unmount