Loading fs/ocfs2/alloc.c +27 −25 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 == Loading Loading @@ -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, Loading Loading @@ -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", Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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, Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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, Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); } Loading Loading
fs/ocfs2/alloc.c +27 −25 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 == Loading Loading @@ -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, Loading Loading @@ -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", Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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, Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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, Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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, Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); } Loading