[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-970-gd6270df

Jeremy Allison jra at samba.org
Thu Aug 13 15:17:26 MDT 2009

On Thu, Aug 13, 2009 at 01:10:16PM -0700, Jeremy Allison wrote:
> I just did :-).
> " * Extended attributes are stored directly in inodes (on file systems with
>  * inodes bigger than 128 bytes) and on additional disk blocks. The i_file_acl
>  * field contains the block number if an inode uses an additional block. All
>  * attributes must fit in the inode and one additional block."

Ok, I've been thinking about this. If we're going to move
all extra meta-data into one EA (other than SD's) we need
to use the user.DOSATTRIB EA name. The reason for this
is backwards compatibility.

Currently user.DOSATTRIB consists of a string containing
the dos attributes. 3.5 could maintain this, but then
after the string store an ndr linearized version of the
extra metadata (timestamps, allocation etc.) as a blob
after the string. Existing versions of Samba still work
by simply parsing the string. 3.5 and above will detect
the extra blob presence by checking the size of the EA
is larger than the string and then accessing the blob.

We can't suddenly start to store the DOS attributes
in a different EA name as then the stored data in the
filesystem will be incompatible if someone runs
a previous version of Samba, something we've managed
to avoid with filesystem data up until now.

We need to make this decision NOW, as once a version
ships that uses a new EA store name for metadata, we're
forced to keep this moving forwards for backwards compatibility

The current code has one advantage in that is allows
vendors who already have full Windows timestamps
in their (custom?) filesystem to leave the storage
of create timestamps turned off, only people running
on top of POSIX with EA's need turn it on. Plus this
code is already written, tested and is quite a small
change :-).

How expensive is it to use another EA ? Knowing
the answer to this would help in making the decision
on whether I have to change the create timestamp
store code asap, or if we can leave it as "done".

Comments and thoughts ?


More information about the samba-technical mailing list