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 <[email protected]>
> ---
> 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.
--Mark
--
Mark Fasheh
_______________________________________________
Ocfs2-devel mailing list
[email protected]
http://oss.oracle.com/mailman/listinfo/ocfs2-devel