[Top] [All Lists]

Re: Extended attributes limit in Linux

To: Vyacheslav Dubeyko <slava@xxxxxxxxxxx>
Subject: Re: Extended attributes limit in Linux
From: Jeff Liu <jeff.liu@xxxxxxxxxx>
Date: Fri, 31 Jan 2014 20:24:45 +0800
Cc: Sun_Blood <sblood@xxxxxxxxx>, xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1391165083.4275.7.camel@ubuntu>
References: <CAMN6oR=a0G6O-3CVVkTwhYKavJTa543U3MLezCM8KW1ASZcPnA@xxxxxxxxxxxxxx> <52EB64DC.4020603@xxxxxxxxxx> <1391165083.4275.7.camel@ubuntu>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0
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.


<Prev in Thread] Current Thread [Next in Thread>