All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH 0/13] ocfs2: xattr bucket API
@ 2008-10-28  1:20 Joel Becker
  2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 01/13] ocfs2: Field prefixes for the xattr_bucket structure Joel Becker
                   ` (13 more replies)
  0 siblings, 14 replies; 23+ messages in thread
From: Joel Becker @ 2008-10-28  1:20 UTC (permalink / raw)
  To: ocfs2-devel

When the extended attribute namespace grows to a b-tree, the leaf
clusters are organized by means of 'buckets'.  Each bucket is 4K in
size, regardless of blocksize.  Thus, a bucket may be made of more than
one block.

fs/ocfs2/xattr.c has a nice little abstraction to wrap this, struct
ocfs2_xattr_bucket.  It contains a list of buffer_heads representing
these blocks, and there is even an API to fill it or initialize it.

However, the majority of the code does not use this abstraction.
Instead, it uses raw buffer_heads and jumps through other hoops.
This has two consequences.  First, it's harder to read.  Second, it is
less efficient.  Sometimes it reads the first and last block of a
bucket, when reading and writing all blocks at once is a streaming I/O.

This series expands the bucket API in a fashion similar to
fs/ocfs2/alloc.c's struct ocfs2_path.  The hope is that all bucket
operations can use this API and mostly avoid raw buffer_head work.

This is also needed for checksums of buckets, as the checksum
calculations need to read the entire bucket.  Since a 4K contig I/O is
just as cheap as a single block, this causes no loss of efficiency.

This path series is on top of my xattr-28 fixes branch.  Before going
upstream it will be rebased on top of at least the divide_bucket fix.
It only touches the xattr_get() and xattr_list() paths, becuase I need
Tao's single-transaction xattr_set() before I can do the xattr_set()
path.

All comments and review welcome.  I hope it's mostly self-explanatory.

View:
http://oss.oracle.com/git/?p=jlbec/linux-2.6.git;a=shortlog;h=xattr-buckets
Pull:
git://oss.oracle.com/git/jlbec/linux-2.6.git xattr-buckets

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2008-11-07 21:36 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-28  1:20 [Ocfs2-devel] [PATCH 0/13] ocfs2: xattr bucket API Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 01/13] ocfs2: Field prefixes for the xattr_bucket structure Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 02/13] ocfs2: Convenient access to an xattr bucket's block number Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 03/13] ocfs2: Convenient access to xattr bucket data blocks Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 04/13] ocfs2: Convenient access to an xattr bucket's header Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 05/13] ocfs2: Provide a wrapper to brelse() xattr bucket buffers Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 06/13] ocfs2: Improve ocfs2_read_xattr_bucket() Joel Becker
2008-10-28  2:44   ` Tao Ma
2008-10-28  6:14     ` Joel Becker
2008-10-28  6:25       ` Tao Ma
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 07/13] ocfs2: Wrap journal_access/journal_dirty for xattr buckets Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 08/13] ocfs2: Copy xattr buckets with a dedicated function Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 09/13] ocfs2: Take ocfs2_xattr_bucket structures off of the stack Joel Becker
2008-10-28  1:50   ` Tao Ma
2008-10-28  1:53     ` Joel Becker
2008-10-28  2:24   ` Tao Ma
2008-10-28  6:16     ` Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 10/13] ocfs2: Use buckets in ocfs2_xattr_bucket_find() Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 11/13] ocfs2: Use buckets in ocfs2_xattr_create_index_block() Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 12/13] ocfs2: Use buckets in ocfs2_defrag_xattr_bucket() Joel Becker
2008-10-28  1:20 ` [Ocfs2-devel] [PATCH 13/13] ocfs2: Use buckets in ocfs2_xattr_set_entry_in_bucket() Joel Becker
2008-11-07 21:21 ` [Ocfs2-devel] [PATCH 0/13] ocfs2: xattr bucket API Mark Fasheh
2008-11-07 21:36   ` Joel Becker

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.