mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
99102d6247
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>
655 lines
16 KiB
Plaintext
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
|