[Ocfs2-devel] [PATCH 2/2] ocfs2: Adjust rightmost path in ocfs2_add_branch.
Joel Becker
Joel.Becker at oracle.com
Fri Jun 12 14:56:04 PDT 2009
On Fri, Jun 12, 2009 at 02:18:36PM +0800, Tao Ma wrote:
> @@ -998,6 +1052,27 @@ static int ocfs2_add_branch(struct ocfs2_super *osb,
>
> new_blocks = le16_to_cpu(el->l_tree_depth);
>
> + eb = (struct ocfs2_extent_block *)(*last_eb_bh)->b_data;
> + new_cpos = ocfs2_sum_rightmost_rec(&eb->h_list);
> + root_end = ocfs2_sum_rightmost_rec(et->et_root_el);
> +
> + /*
> + * If there is a gap before the root end and the real end
> + * of the righmost leaf block, we need to remove the gap
> + * between new_cpos and root_end first so that the tree
> + * is consistent after we add a new branch(it will start
> + * from new_cpos).
> + */
> + if (root_end > new_cpos) {
> + mlog(0, "adjust the cluster end from %u to %u\n",
> + root_end, new_cpos);
> + status = ocfs2_adjust_rightmost_branch(handle, inode, et);
> + if (status) {
> + mlog_errno(status);
> + goto bail;
> + }
> + }
> +
> /* allocate the number of new eb blocks we need */
> new_eb_bhs = kcalloc(new_blocks, sizeof(struct buffer_head *),
> GFP_KERNEL);
Yeah, this is nice and clean.
Joel
--
"Senator let's be sincere,
As much as you can."
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