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

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
...@@ -1691,7 +1691,7 @@ static void ocfs2_create_empty_extent(struct ocfs2_extent_list *el) ...@@ -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. * 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 *left,
struct ocfs2_path *right) struct ocfs2_path *right)
{ {
...@@ -1709,10 +1709,10 @@ static int ocfs2_find_subtree_root(struct inode *inode, ...@@ -1709,10 +1709,10 @@ static int ocfs2_find_subtree_root(struct inode *inode,
* The caller didn't pass two adjacent paths. * The caller didn't pass two adjacent paths.
*/ */
mlog_bug_on_msg(i > left->p_tree_depth, 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", "left leaf blk %llu, right leaf blk %llu\n",
inode->i_ino, left->p_tree_depth, (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
right->p_tree_depth, left->p_tree_depth, right->p_tree_depth,
(unsigned long long)path_leaf_bh(left)->b_blocknr, (unsigned long long)path_leaf_bh(left)->b_blocknr,
(unsigned long long)path_leaf_bh(right)->b_blocknr); (unsigned long long)path_leaf_bh(right)->b_blocknr);
} while (left->p_node[i].bh->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, ...@@ -2422,7 +2422,7 @@ static int ocfs2_rotate_tree_right(struct inode *inode, handle_t *handle,
goto out_ret_path; 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", mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n",
start, start,
...@@ -2933,7 +2933,7 @@ static int __ocfs2_rotate_tree_left(struct inode *inode, ...@@ -2933,7 +2933,7 @@ static int __ocfs2_rotate_tree_left(struct inode *inode,
goto out; goto out;
} }
subtree_root = ocfs2_find_subtree_root(inode, left_path, subtree_root = ocfs2_find_subtree_root(et, left_path,
right_path); right_path);
mlog(0, "Subtree root at index %d (blk %llu, depth %d)\n", 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, ...@@ -3068,7 +3068,7 @@ static int ocfs2_remove_rightmost_path(struct inode *inode, handle_t *handle,
goto out; 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, ocfs2_unlink_subtree(handle, et, left_path, path,
subtree_index, dealloc); subtree_index, dealloc);
...@@ -3324,6 +3324,7 @@ static int ocfs2_get_right_path(struct inode *inode, ...@@ -3324,6 +3324,7 @@ static int ocfs2_get_right_path(struct inode *inode,
static int ocfs2_merge_rec_right(struct inode *inode, static int ocfs2_merge_rec_right(struct inode *inode,
struct ocfs2_path *left_path, struct ocfs2_path *left_path,
handle_t *handle, handle_t *handle,
struct ocfs2_extent_tree *et,
struct ocfs2_extent_rec *split_rec, struct ocfs2_extent_rec *split_rec,
int index) int index)
{ {
...@@ -3363,8 +3364,8 @@ static int ocfs2_merge_rec_right(struct inode *inode, ...@@ -3363,8 +3364,8 @@ static int ocfs2_merge_rec_right(struct inode *inode,
le16_to_cpu(left_rec->e_leaf_clusters) != le16_to_cpu(left_rec->e_leaf_clusters) !=
le32_to_cpu(right_rec->e_cpos)); le32_to_cpu(right_rec->e_cpos));
subtree_index = ocfs2_find_subtree_root(inode, subtree_index = ocfs2_find_subtree_root(et, left_path,
left_path, right_path); right_path);
ret = ocfs2_extend_rotate_transaction(handle, subtree_index, ret = ocfs2_extend_rotate_transaction(handle, subtree_index,
handle->h_buffer_credits, handle->h_buffer_credits,
...@@ -3377,7 +3378,7 @@ static int ocfs2_merge_rec_right(struct inode *inode, ...@@ -3377,7 +3378,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
root_bh = left_path->p_node[subtree_index].bh; root_bh = left_path->p_node[subtree_index].bh;
BUG_ON(root_bh != right_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); subtree_index);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -3386,14 +3387,14 @@ static int ocfs2_merge_rec_right(struct inode *inode, ...@@ -3386,14 +3387,14 @@ static int ocfs2_merge_rec_right(struct inode *inode,
for (i = subtree_index + 1; for (i = subtree_index + 1;
i < path_num_items(right_path); i++) { 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); right_path, i);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
goto out; 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); left_path, i);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -3406,7 +3407,7 @@ static int ocfs2_merge_rec_right(struct inode *inode, ...@@ -3406,7 +3407,7 @@ static int ocfs2_merge_rec_right(struct inode *inode,
right_rec = &el->l_recs[index + 1]; 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); path_num_items(left_path) - 1);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -3417,7 +3418,8 @@ static int ocfs2_merge_rec_right(struct inode *inode, ...@@ -3417,7 +3418,8 @@ static int ocfs2_merge_rec_right(struct inode *inode,
le32_add_cpu(&right_rec->e_cpos, -split_clusters); le32_add_cpu(&right_rec->e_cpos, -split_clusters);
le64_add_cpu(&right_rec->e_blkno, 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); le16_add_cpu(&right_rec->e_leaf_clusters, split_clusters);
ocfs2_cleanup_merge(el, index); ocfs2_cleanup_merge(el, index);
...@@ -3532,8 +3534,8 @@ static int ocfs2_merge_rec_left(struct inode *inode, ...@@ -3532,8 +3534,8 @@ static int ocfs2_merge_rec_left(struct inode *inode,
le16_to_cpu(left_rec->e_leaf_clusters) != le16_to_cpu(left_rec->e_leaf_clusters) !=
le32_to_cpu(split_rec->e_cpos)); le32_to_cpu(split_rec->e_cpos));
subtree_index = ocfs2_find_subtree_root(inode, subtree_index = ocfs2_find_subtree_root(et, left_path,
left_path, right_path); right_path);
ret = ocfs2_extend_rotate_transaction(handle, subtree_index, ret = ocfs2_extend_rotate_transaction(handle, subtree_index,
handle->h_buffer_credits, handle->h_buffer_credits,
...@@ -3694,7 +3696,7 @@ static int ocfs2_try_to_merge_extent(struct inode *inode, ...@@ -3694,7 +3696,7 @@ static int ocfs2_try_to_merge_extent(struct inode *inode,
* if we do merge_right first and merge_left later. * if we do merge_right first and merge_left later.
*/ */
ret = ocfs2_merge_rec_right(inode, path, ret = ocfs2_merge_rec_right(inode, path,
handle, split_rec, handle, et, split_rec,
split_index); split_index);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -3758,9 +3760,8 @@ static int ocfs2_try_to_merge_extent(struct inode *inode, ...@@ -3758,9 +3760,8 @@ static int ocfs2_try_to_merge_extent(struct inode *inode,
goto out; goto out;
} }
} else { } else {
ret = ocfs2_merge_rec_right(inode, ret = ocfs2_merge_rec_right(inode, path, handle,
path, et, split_rec,
handle, split_rec,
split_index); split_index);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -4118,6 +4119,7 @@ static void ocfs2_split_record(struct inode *inode, ...@@ -4118,6 +4119,7 @@ static void ocfs2_split_record(struct inode *inode,
*/ */
static int ocfs2_insert_path(struct inode *inode, static int ocfs2_insert_path(struct inode *inode,
handle_t *handle, handle_t *handle,
struct ocfs2_extent_tree *et,
struct ocfs2_path *left_path, struct ocfs2_path *left_path,
struct ocfs2_path *right_path, struct ocfs2_path *right_path,
struct ocfs2_extent_rec *insert_rec, struct ocfs2_extent_rec *insert_rec,
...@@ -4143,7 +4145,7 @@ static int ocfs2_insert_path(struct inode *inode, ...@@ -4143,7 +4145,7 @@ static int ocfs2_insert_path(struct inode *inode,
goto out; 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) { if (ret < 0) {
mlog_errno(ret); mlog_errno(ret);
goto out; goto out;
...@@ -4154,7 +4156,7 @@ static int ocfs2_insert_path(struct inode *inode, ...@@ -4154,7 +4156,7 @@ static int ocfs2_insert_path(struct inode *inode,
* Pass both paths to the journal. The majority of inserts * Pass both paths to the journal. The majority of inserts
* will be touching all components anyway. * 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) { if (ret < 0) {
mlog_errno(ret); mlog_errno(ret);
goto out; goto out;
...@@ -4194,7 +4196,7 @@ static int ocfs2_insert_path(struct inode *inode, ...@@ -4194,7 +4196,7 @@ static int ocfs2_insert_path(struct inode *inode,
* *
* XXX: Should we extend the transaction here? * 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); right_path);
ocfs2_complete_edge_insert(handle, left_path, right_path, ocfs2_complete_edge_insert(handle, left_path, right_path,
subtree_index); subtree_index);
...@@ -4297,7 +4299,7 @@ static int ocfs2_do_insert_extent(struct inode *inode, ...@@ -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); insert_rec, type);
if (ret) { if (ret) {
mlog_errno(ret); mlog_errno(ret);
...@@ -5397,7 +5399,7 @@ static int ocfs2_truncate_rec(struct inode *inode, handle_t *handle, ...@@ -5397,7 +5399,7 @@ static int ocfs2_truncate_rec(struct inode *inode, handle_t *handle,
if (left_path) { if (left_path) {
int subtree_index; 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, ocfs2_complete_edge_insert(handle, left_path, path,
subtree_index); subtree_index);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment