From: Tao Ma <tao.ma@oracle.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [PATCH 0/14] ocfs2: Unify the setting of extended attributes
Date: Thu, 20 Aug 2009 10:03:52 +0800 [thread overview]
Message-ID: <4A8CAF08.6090403@oracle.com> (raw)
In-Reply-To: <1250711679-12441-1-git-send-email-joel.becker@oracle.com>
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
next prev parent reply other threads:[~2009-08-20 2:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-19 19:54 [Ocfs2-devel] [PATCH 0/14] ocfs2: Unify the setting of extended attributes Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 01/14] ocfs2: Introduce ocfs2_xa_loc Joel Becker
2009-08-27 7:48 ` Tao Ma
2009-08-27 9:28 ` Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 02/14] ocfs2: Remove xattrs via ocfs2_xa_loc Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 03/14] ocfs2: Prefix the member fields of struct ocfs2_xattr_info Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 04/14] ocfs2: Add a name_len field to ocfs2_xattr_info Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 05/14] ocfs2: Wrap calculation of name+value pair size Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 06/14] ocfs2: Set the xattr name+value pair in one place Joel Becker
2009-09-02 9:34 ` Tiger Yang
2009-09-02 10:30 ` Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 07/14] ocfs2: Handle value tree roots in ocfs2_xa_set_inline_value() Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 08/14] ocfs2: Provide ocfs2_xa_fill_value_buf() for external value processing Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 09/14] ocfs2: Teach ocfs2_xa_loc how to do its own journal work Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 10/14] ocfs2: Allocation in ocfs2_xa_prepare_entry() values in ocfs2_xa_store_value() Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 11/14] ocfs2: Gell into ocfs2_xa_set() Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 12/14] ocfs2: Let ocfs2_xa_prepare_entry() do space checks Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 13/14] ocfs2: Set xattr block entries with ocfs2_xa_set() Joel Becker
2009-08-19 19:54 ` [Ocfs2-devel] [PATCH 14/14] ocfs2: Set inline xattr " Joel Becker
2009-08-20 2:03 ` Tao Ma [this message]
-- strict thread matches above, loose matches on Subject: below --
2009-08-28 8:35 [Ocfs2-devel] [PATCH 0/14] ocfs2: Unify the setting of extended attributes Joel Becker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A8CAF08.6090403@oracle.com \
--to=tao.ma@oracle.com \
--cc=ocfs2-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.