[Ocfs2-devel] [PATCH 0/14] ocfs2: Unify the setting of extended attributes
Tao Ma
tao.ma at oracle.com
Wed Aug 19 19:03:52 PDT 2009
Hi Joel,
Joel Becker wrote:
> ocfs2 can store extended attributes in many ways. They can live inside
> the inode's inline data area, they can be stored in a single external
> block, or they can be in a "bucket" hanging off of a lookup tree. There
> are differences in how each storage type manages the attributes, and the
> current ocfs2 code reflects this.
>
> There are two entirely separate code paths for setting extended
> attributes. The first code path handles "block" storage - the inline
> inode or the external block. The second handles "bucket" storage. They
> do very similar things, but they go about them in very different ways.
> This makes reading and understanding the ocfs2 xattr code harder than it
> needs to be. Worse, updating the xattr code requires understanding and
> modifying both paths.
>
> This patch series unifies the xattr set code such that inodes, block,
> and buckets make the same call. It removes most of the redundant code,
> like the repeated implementations of truncating externally stored values.
Due to some historical reasons, the setting of xattrs has been divided
into 2 parts. I am so sorry for that and to be frank, I want to change
it for a very long time. So thanks for doing this.
>
> The core of the implementation is the ocfs2_xa_loc structure. This is
> an in-memory representation of an ocfs2_xattr_entry. It has operations
> that allow blocks and buckets to behave differently during the xattr
> modification process. Blocks and buckets are different enough that
> ocfs2_xa_loc_operations has ten different ops! But with these
> differences encapsulated, we can have a single code path to modify an
> entry.
>
> The changes don't reduce the size of the source code perceptibly (~10
> lines of actual code without comments or blanks), but to my mind they
> greatly improve the readability and maintainability.
>
> The current series is based on the 'fixes' branch; I'll need to rebase
> it atop cachme before it can go upstream. I wanted to send it out as it
> stands now so that the concept can be reviewed while I work on
> merge-window.
>
> Tao and Tiger, I'd really appreciate you going over the changes with a
> find-toothed comb. Make sure I have my ideas about block and bucket
> stuff correct, etc. Let me know if you think this is a stupid change,
> too :-)
the idea is cool and it is really helpful and I will review it carefully.
Regards,
Tao
More information about the Ocfs2-devel
mailing list