On 01/31 2014 18:44 PM, Vyacheslav Dubeyko wrote:
> On Fri, 2014-01-31 at 16:54 +0800, Jeff Liu wrote:
>> Hello,
>>
>> On 01/31 2014 15:40 PM, Sun_Blood wrote:
>>> Hello,
>>>
>>> If I understands it correctly XFS don't have a limit to the size of
>>> extended attributes(EA) but Linux impose a limit at 64k.
>>> What I am trying to do is build a backup server that our Apple computers
>>> will use together with rsync to backup files to. The problem I face is
>>> that Apple HFS+ don't have a limit to EA so it has files with more then
>>> 64k of EA in it.
>
> Technical Note TN1150:
> "In an HFS Plus B-tree, the node size is determined by a field
> (nodeSize) in the header node. The node size must be a power from 512
> through 32,768."
>
> So, as minimum, xattrs unable to be a larger than node size.
>
> But xattrs' size has limitation anyway:
>
> https://github.com/darwin-on-arm/xnu/blob/master/bsd/hfs/hfs.h#L849
>
> /* Maximum extended attribute size supported for all extended attributes
> except
> * resource fork and finder info.
> */
> #define HFS_XATTR_MAXSIZE (128 * 1024)
>
> So, I need to check and correct slightly HFS+ xattrs support code.
> Because, I used 3082 bytes limitation value.
I just verified above limits on Mac OS X, that's true.
sh-3.2# a=`perl -e 'print "A"x131072'`
sh-3.2# xattr -w user.comment ${a} xattr_test
sh-3.2# a=`perl -e 'print "A"x131073'`
sh-3.2# xattr -w user.comment ${a} xattr_test
xattr: [Errno 7] Argument list too long: 'xattr'
Hence, that would be a problem to preserve EA with large value size on Linux.
Thanks,
-Jeff
|