[Ocfs2-devel] [PATCH 1/1] Ocfs2: Re-access the journal after ocfs2_insert_extent() in dxdir codes.

Mark Fasheh mfasheh at suse.com
Wed Sep 8 19:39:16 PDT 2010


On Thu, Sep 09, 2010 at 09:35:20AM +0800, tristan wrote:
> Mark Fasheh wrote:
> > On Wed, Sep 08, 2010 at 05:12:38PM +0800, Tristan Ye wrote:
> >> In ocfs2_dx_dir_rebalance(), we need to rejournal_acess the blocks after
> >> calling ocfs2_insert_extent() since growing an extent tree may trigger
> >> ocfs2_extend_trans(), which makes previous journal_access meaningless.
> >>
> >> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
> >> ---
> >>  fs/ocfs2/dir.c |   24 ++++++++++++++++--------
> >>  1 files changed, 16 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
> >> index f04ebcf..c49f6de 100644
> >> --- a/fs/ocfs2/dir.c
> >> +++ b/fs/ocfs2/dir.c
> >> @@ -3931,6 +3931,15 @@ static int ocfs2_dx_dir_rebalance(struct ocfs2_super *osb, struct inode *dir,
> >>  		goto out_commit;
> >>  	}
> >>  
> >> +	cpos = split_hash;
> >> +	ret = ocfs2_dx_dir_new_cluster(dir, &et, cpos, handle,
> >> +				       data_ac, meta_ac, new_dx_leaves,
> >> +				       num_dx_leaves);
> >> +	if (ret) {
> >> +		mlog_errno(ret);
> >> +		goto out_commit;
> >> +	}
> >> +
> >>  	for (i = 0; i < num_dx_leaves; i++) {
> >>  		ret = ocfs2_journal_access_dl(handle, INODE_CACHE(dir),
> >>  					      orig_dx_leaves[i],
> >
> > Ok, I see what you're going for here. Don't we still need to add a
> > journal_access_dl call against new_dx_leaves[i] in the for loop though? They
> > will be dirtied again in ocfs2_dx_dir_transfer_leaf.
> 
> Didn't I?
> 
> This patch already had the codes calling the journal_access_dl against 
> new_dx_leaves.
> 
> Look at the second portion of this patch, that is it.

Ahh yes, you are correct. Sorry about that, not sure how I missed it.
Anyway, you can add my ack:

Acked-by: Mark Fasheh <mfasheh at suse.com>

The patch looks good to me.
	--Mark 


--
Mark Fasheh



More information about the Ocfs2-devel mailing list