|
|
| File: [Development] / xfs-cmds / attr / test / attr.test (download)
Revision 1.3, Mon Mar 11 23:42:35 2002 UTC (15 years, 7 months ago) by nathans
man page and test script updates from Andreas. fix syscall numbering a/ on sparc (fremovexattr was wrong) and b/ if arch doesn't have numbers defined yet, handle it cleanly (errno.h missing). |
! ! Tests for extended attributes on ext2/ext3 file systems. The initial ! size checks and the file size checks are ext2/ext3 specific. The ! other setfattr/getfattr operations are designed to cover all special ! cases in the ext27ext3 kernel patches, but they should work on other ! filesystems as well. ! ! Execute this test using the `run' script in this directory: ! ! $ run attr.text ! ! === size checks, for an ext2/ext3 file system with a block size of 1K $ touch f $ setfattr -n user.name -v 968+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ f $ setfattr -n user.name -v 969++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ f setfattr: f: No space left on device $ rm f ! ! Editing values ! $ touch f $ setfattr -n user.vvvvvvvvvvvv -v vvvvvvvvvvvv f $ setfattr -n user.wwwwwwww -v wwwwwwww f $ setfattr -n user.xxxx -v xxxx f $ getfattr -d f # file: f user.vvvvvvvvvvvv="vvvvvvvvvvvv" user.wwwwwwww="wwwwwwww" user.xxxx="xxxx" $ setfattr -n user.wwwwwwww -v wwww f $ getfattr -d f # file: f user.vvvvvvvvvvvv="vvvvvvvvvvvv" user.wwwwwwww="wwww" user.xxxx="xxxx" $ setfattr -n user.xxxx -v xxxxxxxx f $ getfattr -d f # file: f user.vvvvvvvvvvvv="vvvvvvvvvvvv" user.wwwwwwww="wwww" user.xxxx="xxxxxxxx" $ rm f ! ! Value encodings ! $ touch f $ setfattr -n user.name -v 0xbabe f $ setfattr -n user.name2 -v 0s3q2+7w== f $ setfattr -n user.name3 -v 0xdeface f $ getfattr -d -e hex f # file: f user.name=0xbabe user.name2=0xdeadbeef user.name3=0xdeface $ getfattr -d -e base64 f # file: f user.name=0sur4= user.name2=0s3q2+7w== user.name3=0s3vrO $ getfattr -d -e text f # file: f user.name="º¾" user.name2="Þ¾ï" user.name3="ÞúÎ" $ rm f ! ! Everything with one file ! $ touch f $ setfattr -n user.novalue f $ setfattr -n user.somename -v somevalue f $ setfattr -n user.somename -v somevalue f $ setfattr -n user.longername -v longervalue f $ setfattr -n user.short -v value f $ setfattr -n user.novalue-yet f $ ls -s f 1 f $ getfattr -d f # file: f user.longername="longervalue" user.novalue user.novalue-yet user.short="value" user.somename="somevalue" $ setfattr -n user.novalue-yet -v avalue-now f $ getfattr -d f # file: f user.longername="longervalue" user.novalue user.novalue-yet="avalue-now" user.short="value" user.somename="somevalue" $ setfattr -x user.noname f setfattr: f: No such attribute $ setfattr -x user.somename f $ setfattr -x user.short f $ getfattr -d f # file: f user.longername="longervalue" user.novalue user.novalue-yet="avalue-now" $ setfattr -x user.longername f $ setfattr -x user.novalue f $ setfattr -x user.novalue-yet f $ getfattr -d f $ ls -s f 0 f $ rm f ! ! Test extended attribute block sharing ! $ touch f g h $ setfattr -n user.novalue f g h $ ls -s f g h 1 f 1 g 1 h $ setfattr -n user.name -v value f $ ls -s f g h 1 f 1 g 1 h $ getfattr -d f g h # file: f user.name="value" user.novalue # file: g user.novalue # file: h user.novalue $ setfattr -n user.name -v value g $ ls -s f g h 1 f 1 g 1 h $ setfattr -x user.novalue h $ ls -s f g h 1 f 1 g 0 h $ getfattr -d f g h # file: f user.name="value" user.novalue # file: g user.name="value" user.novalue $ setfattr -n user.name -v other-value g $ setfattr -n user.name -v value g $ setfattr -x user.name f g $ setfattr -x user.novalue f g $ ls -s f g h 0 f 0 g 0 h $ rm f g h ! ! Attributes of symlinks vs. the files pointed to ! $ touch f $ ln -s f l $ setfattr -n user.filename -v f l $ setfattr -h -n user.filename -v l l $ getfattr -d f l # file: f user.filename="f" # file: l user.filename="f" $ getfattr -h -d f l # file: f user.filename="f" # file: l user.filename="l" $ rm f l