[Ocfs2-devel] [PATCH 07/15] Add extent tree operation for xattr value.v3
Joel Becker
Joel.Becker at oracle.com
Fri Aug 15 20:29:07 PDT 2008
On Fri, Aug 15, 2008 at 07:18:54PM -0700, Joel Becker wrote:
> Why don't you have an operation for getting the el? Really, the
> way I see it, you should have:
>
> void ocfs2_fill_extent_tree(*et, *bh, void *object, type)
> {
> et->et_type = type;
> et->et_ops = extent_tree_ops[type];
> get_bh(bh);
> et->et_root_bh = bh;
> et->et_object = object ? object : (void *)bh->b_data;
> et->et_root_el = et->et_ops->et_get_root_el(et);
> }
>
> If you pass NULL for *object, it knows to use the start of the bh. This
> works for dinode, etc. But you can pass a non-NULL object for the
> xattr_value_root. The get_root_el operations know how to take et_object
> and return the el:
<snip>
> > -int ocfs2_insert_extent(struct ocfs2_super *osb,
> > - handle_t *handle,
> > - struct inode *inode,
> > - struct buffer_head *root_bh,
> > - u32 cpos,
> > - u64 start_blk,
> > - u32 new_clusters,
> > - u8 flags,
> > - struct ocfs2_alloc_context *meta_ac,
> > - enum ocfs2_extent_tree_type et_type)
> > +static int ocfs2_insert_extent(struct ocfs2_super *osb,
> > + handle_t *handle,
> > + struct inode *inode,
> > + struct buffer_head *root_bh,
> > + u32 cpos,
> > + u64 start_blk,
> > + u32 new_clusters,
> > + u8 flags,
> > + struct ocfs2_alloc_context *meta_ac,
> > + struct ocfs2_extent_tree *et)
>
> Here you are passing in the et, so you don't need root_bh
> anymore, right
In fact, you don't need
xattr_insert_extent/dinode_insert_extent. Just have the callers of
ocfs2_insert_extent create an extent tree (they're almost doing so
already) and then pass it to ocfs2_insert_extent.
Conversely, if you really like those wrappers, have them turn
cpos/start_blk/new_clusters into an extent_rec before calling
ocfs2_insert_extent. It can be passed straight down into
do_insert_extent.
Joel
--
"Nearly all men can stand adversity, but if you really want to
test a man's character, give him power."
- Abraham Lincoln
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
More information about the Ocfs2-devel
mailing list