Attribute order in storing and retreiving extended attributes

Ian Lepore ian at freebsd.org
Sun Jan 10 17:46:27 UTC 2016


On Sun, 2016-01-10 at 17:55 +0100, Willem Jan Withagen wrote:
> Hi,
> 
> I'm looking into why a snippet of Ceph testcode sometimes retuns
> error,
> and other times does complete oke.
> 
> It seems that under Linux the way order of attributes is always
> consistent in the same order.
> 
> Where as on FreeBSD it can happen that even with the same sequence of
> extattr_set_* will give a different order in the extattr_list_fd
> output.
> And because the outputbuffer is compared with memcmp an error is
> detected.
> 
> Easy to verify with lsextattr, which also gives a different order.
> 
> When things go oke the order is:
> # lsextattr user chain_xattr_listxatrr
> chain_xattr_listxatrr, size: 512
> user.1111111111111111111111111111111111111111111111111111111111111111
> 111
> 11111111111111111111111111111111111111111111111111111111 at 1
> user.1111111111111111111111111111111111111111111111111111111111111111
> 111
> 11111111111111111111111111111111111111111111111111111111
> user.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> 
> When thing go wrong, the order is:
>  # lsextattr user chain_xattr_listxatrr
> chain_xattr_listxatrr, size: 512
> user.1111111111111111111111111111111111111111111111111111111111111111
> 111
> 11111111111111111111111111111111111111111111111111111111
> user.1111111111111111111111111111111111111111111111111111111111111111
> 111
> 11111111111111111111111111111111111111111111111111111111 at 1
> user.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @@@
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> 
> This is on a ZFS filesystem.
> Is there any particular reason why these is not deterministic?
> I do not have a testbox with UFS available, so it is hard to verify
> that
> it occurs there too.
> 
> Would this be easy to make more deterministic?
> 

Could you just pipe the lsextattr output through sort to make it
deterministic?

-- Ian



More information about the freebsd-hackers mailing list