Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7dc02805 authored by Joel Becker's avatar Joel Becker
Browse files

ocfs2: Pass ocfs2_extent_tree to ocfs2_get_subtree_root()



Get rid of the inode argument.  Use extent_tree instead.  This means a
few more functions have to pass an extent_tree around.

Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
parent 5c601aba
Loading
Loading
Loading
Loading
+27 −25
Original line number Diff line number Diff line
@@ -1691,7 +1691,7 @@ static void ocfs2_create_empty_extent(struct ocfs2_extent_list *el)
 *
 * The array index of the subtree root is passed back.
 */
static int ocfs2_find_subtree_root(struct inode *inode,
static int ocfs2_find_subtree_root(struct ocfs2_extent_tree *et,
				   struct ocfs2_path *left,
				   struct ocfs2_path *right)
{
@@ -1709,10 +1709,10 @@ static int ocfs2_find_subtree_root(struct inode *inode,
		 * The caller didn't pass two adjacent paths.
		 */
		mlog_bug_on_msg(i > left->p_tree_depth,
				"Inode %lu, left depth %u, right depth %u\n"
				"Owner %llu, left depth %u, right depth %u\n"
				"left leaf blk %llu, right leaf blk %llu\n",
				inode->i_ino, left->p_tree_depth,
				right->p_tree_depth,
				(unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
				left->p_tree_depth, right->p_tree_depth,
				(unsigned long long)path_leaf_bh(left)->b_blocknr,
				(unsigned long long)path_leaf_bh(right)->b_blocknr);
	} while (left->p_node[i].bh->b_blocknr ==
@@ -2422,7 +2422,7 @@ static int ocfs2_rotate_tree_right(struct inode *inode, handle_t *handle,
			goto out_ret_path;
		}

		start = ocfs2_find_subtree_root(inode, left_path, right_path);
		start = ocfs2_find_subtree_root(et, left_path, right_path);

		mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n",
		     start,
@@ -2933,7 +2933,7 @@ static int __ocfs2_rotate_tree_left(struct inode *inode,
			goto out;
		}

		subtree_root = ocfs2_find_subtree_root(inode, left_path,
		subtree_root = ocfs2_find_subtree_root(et, left_path,
						       right_path);

		mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n",
@@ -3068,7 +3068,7 @@ static int ocfs2_remove_rightmost_path(struct inode *inode, handle_t *handle,
			goto out;
		}

		subtree_index = ocfs2_find_subtree_root(inode, left_path, path);
		subtree_index = ocfs2_find_subtree_root(et, left_path, path);

		ocfs2_unlink_subtree(handle, et, left_path, path,
				     subtree_index, dealloc);
@@ -3324,6 +3324,7 @@ static int ocfs2_get_right_path(struct inode *inode,
static int ocfs2_merge_rec_right(struct inode *inode,
				 struct ocfs2_path *left_path,
				 handle_t *handle,
				 struct ocfs2_extent_tree *et,
				 struct ocfs2_extent_rec *split_rec,
				 int index)
{
@@ -3363,8 +3364,8 @@ static int ocfs2_merge_rec_right(struct inode *inode,
		       le16_to_cpu(left_rec->e_leaf_clusters) !=
		       le32_to_cpu(right_rec->e_cpos));

		subtree_index = ocfs2_find_subtree_root(inode,
							left_path, right_path);
		subtree_index = ocfs2_find_subtree_root(et, left_path,
							right_path);

		ret = ocfs2_extend_rotate_transaction(handle, subtree_index,
						      handle->h_buffer_credits,
@@ -3377,7 +3378,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
		root_bh = left_path->p_node[subtree_index].bh;
		BUG_ON(root_bh != right_path->p_node[subtree_index].bh);

		ret = ocfs2_path_bh_journal_access(handle, INODE_CACHE(inode), right_path,
		ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path,
						   subtree_index);
		if (ret) {
			mlog_errno(ret);
@@ -3386,14 +3387,14 @@ static int ocfs2_merge_rec_right(struct inode *inode,

		for (i = subtree_index + 1;
		     i < path_num_items(right_path); i++) {
			ret = ocfs2_path_bh_journal_access(handle, INODE_CACHE(inode),
			ret = ocfs2_path_bh_journal_access(handle, et->et_ci,
							   right_path, i);
			if (ret) {
				mlog_errno(ret);
				goto out;
			}

			ret = ocfs2_path_bh_journal_access(handle, INODE_CACHE(inode),
			ret = ocfs2_path_bh_journal_access(handle, et->et_ci,
							   left_path, i);
			if (ret) {
				mlog_errno(ret);
@@ -3406,7 +3407,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
		right_rec = &el->l_recs[index + 1];
	}

	ret = ocfs2_path_bh_journal_access(handle, INODE_CACHE(inode), left_path,
	ret = ocfs2_path_bh_journal_access(handle, et->et_ci, left_path,
					   path_num_items(left_path) - 1);
	if (ret) {
		mlog_errno(ret);
@@ -3417,7 +3418,8 @@ static int ocfs2_merge_rec_right(struct inode *inode,

	le32_add_cpu(&right_rec->e_cpos, -split_clusters);
	le64_add_cpu(&right_rec->e_blkno,
		     -ocfs2_clusters_to_blocks(inode->i_sb, split_clusters));
		     -ocfs2_clusters_to_blocks(ocfs2_metadata_cache_get_super(et->et_ci),
					       split_clusters));
	le16_add_cpu(&right_rec->e_leaf_clusters, split_clusters);

	ocfs2_cleanup_merge(el, index);
@@ -3532,8 +3534,8 @@ static int ocfs2_merge_rec_left(struct inode *inode,
		       le16_to_cpu(left_rec->e_leaf_clusters) !=
		       le32_to_cpu(split_rec->e_cpos));

		subtree_index = ocfs2_find_subtree_root(inode,
							left_path, right_path);
		subtree_index = ocfs2_find_subtree_root(et, left_path,
							right_path);

		ret = ocfs2_extend_rotate_transaction(handle, subtree_index,
						      handle->h_buffer_credits,
@@ -3694,7 +3696,7 @@ static int ocfs2_try_to_merge_extent(struct inode *inode,
		 * if we do merge_right first and merge_left later.
		 */
		ret = ocfs2_merge_rec_right(inode, path,
					    handle, split_rec,
					    handle, et, split_rec,
					    split_index);
		if (ret) {
			mlog_errno(ret);
@@ -3758,9 +3760,8 @@ static int ocfs2_try_to_merge_extent(struct inode *inode,
				goto out;
			}
		} else {
			ret = ocfs2_merge_rec_right(inode,
						    path,
						    handle, split_rec,
			ret = ocfs2_merge_rec_right(inode, path, handle,
						    et, split_rec,
						    split_index);
			if (ret) {
				mlog_errno(ret);
@@ -4118,6 +4119,7 @@ static void ocfs2_split_record(struct inode *inode,
 */
static int ocfs2_insert_path(struct inode *inode,
			     handle_t *handle,
			     struct ocfs2_extent_tree *et,
			     struct ocfs2_path *left_path,
			     struct ocfs2_path *right_path,
			     struct ocfs2_extent_rec *insert_rec,
@@ -4143,7 +4145,7 @@ static int ocfs2_insert_path(struct inode *inode,
			goto out;
		}

		ret = ocfs2_journal_access_path(INODE_CACHE(inode), handle, left_path);
		ret = ocfs2_journal_access_path(et->et_ci, handle, left_path);
		if (ret < 0) {
			mlog_errno(ret);
			goto out;
@@ -4154,7 +4156,7 @@ static int ocfs2_insert_path(struct inode *inode,
	 * Pass both paths to the journal. The majority of inserts
	 * will be touching all components anyway.
	 */
	ret = ocfs2_journal_access_path(INODE_CACHE(inode), handle, right_path);
	ret = ocfs2_journal_access_path(et->et_ci, handle, right_path);
	if (ret < 0) {
		mlog_errno(ret);
		goto out;
@@ -4194,7 +4196,7 @@ static int ocfs2_insert_path(struct inode *inode,
		 *
		 * XXX: Should we extend the transaction here?
		 */
		subtree_index = ocfs2_find_subtree_root(inode, left_path,
		subtree_index = ocfs2_find_subtree_root(et, left_path,
							right_path);
		ocfs2_complete_edge_insert(handle, left_path, right_path,
					   subtree_index);
@@ -4297,7 +4299,7 @@ static int ocfs2_do_insert_extent(struct inode *inode,
		}
	}

	ret = ocfs2_insert_path(inode, handle, left_path, right_path,
	ret = ocfs2_insert_path(inode, handle, et, left_path, right_path,
				insert_rec, type);
	if (ret) {
		mlog_errno(ret);
@@ -5397,7 +5399,7 @@ static int ocfs2_truncate_rec(struct inode *inode, handle_t *handle,
	if (left_path) {
		int subtree_index;

		subtree_index = ocfs2_find_subtree_root(inode, left_path, path);
		subtree_index = ocfs2_find_subtree_root(et, left_path, path);
		ocfs2_complete_edge_insert(handle, left_path, path,
					   subtree_index);
	}