Lines Matching full:et
69 void (*eo_set_last_eb_blk)(struct ocfs2_extent_tree *et,
71 u64 (*eo_get_last_eb_blk)(struct ocfs2_extent_tree *et);
79 void (*eo_update_clusters)(struct ocfs2_extent_tree *et,
86 void (*eo_extent_map_insert)(struct ocfs2_extent_tree *et,
93 void (*eo_extent_map_truncate)(struct ocfs2_extent_tree *et,
100 int (*eo_insert_check)(struct ocfs2_extent_tree *et,
102 int (*eo_sanity_check)(struct ocfs2_extent_tree *et);
111 * ->eo_fill_root_el() takes et->et_object and sets et->et_root_el.
114 void (*eo_fill_root_el)(struct ocfs2_extent_tree *et);
117 * ->eo_fill_max_leaf_clusters sets et->et_max_leaf_clusters if
118 * it exists. If it does not, et->et_max_leaf_clusters is set
121 void (*eo_fill_max_leaf_clusters)(struct ocfs2_extent_tree *et);
129 (*eo_extent_contig)(struct ocfs2_extent_tree *et,
139 static u64 ocfs2_dinode_get_last_eb_blk(struct ocfs2_extent_tree *et);
140 static void ocfs2_dinode_set_last_eb_blk(struct ocfs2_extent_tree *et,
142 static void ocfs2_dinode_update_clusters(struct ocfs2_extent_tree *et,
144 static void ocfs2_dinode_extent_map_insert(struct ocfs2_extent_tree *et,
146 static void ocfs2_dinode_extent_map_truncate(struct ocfs2_extent_tree *et,
148 static int ocfs2_dinode_insert_check(struct ocfs2_extent_tree *et,
150 static int ocfs2_dinode_sanity_check(struct ocfs2_extent_tree *et);
151 static void ocfs2_dinode_fill_root_el(struct ocfs2_extent_tree *et);
154 struct ocfs2_extent_tree *et,
157 static int ocfs2_is_dealloc_empty(struct ocfs2_extent_tree *et);
170 static void ocfs2_dinode_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_dinode_set_last_eb_blk() argument
173 struct ocfs2_dinode *di = et->et_object; in ocfs2_dinode_set_last_eb_blk()
175 BUG_ON(et->et_ops != &ocfs2_dinode_et_ops); in ocfs2_dinode_set_last_eb_blk()
179 static u64 ocfs2_dinode_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_dinode_get_last_eb_blk() argument
181 struct ocfs2_dinode *di = et->et_object; in ocfs2_dinode_get_last_eb_blk()
183 BUG_ON(et->et_ops != &ocfs2_dinode_et_ops); in ocfs2_dinode_get_last_eb_blk()
187 static void ocfs2_dinode_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_dinode_update_clusters() argument
190 struct ocfs2_inode_info *oi = cache_info_to_inode(et->et_ci); in ocfs2_dinode_update_clusters()
191 struct ocfs2_dinode *di = et->et_object; in ocfs2_dinode_update_clusters()
199 static void ocfs2_dinode_extent_map_insert(struct ocfs2_extent_tree *et, in ocfs2_dinode_extent_map_insert() argument
202 struct inode *inode = &cache_info_to_inode(et->et_ci)->vfs_inode; in ocfs2_dinode_extent_map_insert()
207 static void ocfs2_dinode_extent_map_truncate(struct ocfs2_extent_tree *et, in ocfs2_dinode_extent_map_truncate() argument
210 struct inode *inode = &cache_info_to_inode(et->et_ci)->vfs_inode; in ocfs2_dinode_extent_map_truncate()
215 static int ocfs2_dinode_insert_check(struct ocfs2_extent_tree *et, in ocfs2_dinode_insert_check() argument
218 struct ocfs2_inode_info *oi = cache_info_to_inode(et->et_ci); in ocfs2_dinode_insert_check()
233 static int ocfs2_dinode_sanity_check(struct ocfs2_extent_tree *et) in ocfs2_dinode_sanity_check() argument
235 struct ocfs2_dinode *di = et->et_object; in ocfs2_dinode_sanity_check()
237 BUG_ON(et->et_ops != &ocfs2_dinode_et_ops); in ocfs2_dinode_sanity_check()
243 static void ocfs2_dinode_fill_root_el(struct ocfs2_extent_tree *et) in ocfs2_dinode_fill_root_el() argument
245 struct ocfs2_dinode *di = et->et_object; in ocfs2_dinode_fill_root_el()
247 et->et_root_el = &di->id2.i_list; in ocfs2_dinode_fill_root_el()
251 static void ocfs2_xattr_value_fill_root_el(struct ocfs2_extent_tree *et) in ocfs2_xattr_value_fill_root_el() argument
253 struct ocfs2_xattr_value_buf *vb = et->et_object; in ocfs2_xattr_value_fill_root_el()
255 et->et_root_el = &vb->vb_xv->xr_list; in ocfs2_xattr_value_fill_root_el()
258 static void ocfs2_xattr_value_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_xattr_value_set_last_eb_blk() argument
261 struct ocfs2_xattr_value_buf *vb = et->et_object; in ocfs2_xattr_value_set_last_eb_blk()
266 static u64 ocfs2_xattr_value_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_xattr_value_get_last_eb_blk() argument
268 struct ocfs2_xattr_value_buf *vb = et->et_object; in ocfs2_xattr_value_get_last_eb_blk()
273 static void ocfs2_xattr_value_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_xattr_value_update_clusters() argument
276 struct ocfs2_xattr_value_buf *vb = et->et_object; in ocfs2_xattr_value_update_clusters()
288 static void ocfs2_xattr_tree_fill_root_el(struct ocfs2_extent_tree *et) in ocfs2_xattr_tree_fill_root_el() argument
290 struct ocfs2_xattr_block *xb = et->et_object; in ocfs2_xattr_tree_fill_root_el()
292 et->et_root_el = &xb->xb_attrs.xb_root.xt_list; in ocfs2_xattr_tree_fill_root_el()
295 static void ocfs2_xattr_tree_fill_max_leaf_clusters(struct ocfs2_extent_tree *et) in ocfs2_xattr_tree_fill_max_leaf_clusters() argument
297 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_xattr_tree_fill_max_leaf_clusters()
298 et->et_max_leaf_clusters = in ocfs2_xattr_tree_fill_max_leaf_clusters()
302 static void ocfs2_xattr_tree_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_xattr_tree_set_last_eb_blk() argument
305 struct ocfs2_xattr_block *xb = et->et_object; in ocfs2_xattr_tree_set_last_eb_blk()
311 static u64 ocfs2_xattr_tree_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_xattr_tree_get_last_eb_blk() argument
313 struct ocfs2_xattr_block *xb = et->et_object; in ocfs2_xattr_tree_get_last_eb_blk()
319 static void ocfs2_xattr_tree_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_xattr_tree_update_clusters() argument
322 struct ocfs2_xattr_block *xb = et->et_object; in ocfs2_xattr_tree_update_clusters()
335 static void ocfs2_dx_root_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_dx_root_set_last_eb_blk() argument
338 struct ocfs2_dx_root_block *dx_root = et->et_object; in ocfs2_dx_root_set_last_eb_blk()
343 static u64 ocfs2_dx_root_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_dx_root_get_last_eb_blk() argument
345 struct ocfs2_dx_root_block *dx_root = et->et_object; in ocfs2_dx_root_get_last_eb_blk()
350 static void ocfs2_dx_root_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_dx_root_update_clusters() argument
353 struct ocfs2_dx_root_block *dx_root = et->et_object; in ocfs2_dx_root_update_clusters()
358 static int ocfs2_dx_root_sanity_check(struct ocfs2_extent_tree *et) in ocfs2_dx_root_sanity_check() argument
360 struct ocfs2_dx_root_block *dx_root = et->et_object; in ocfs2_dx_root_sanity_check()
367 static void ocfs2_dx_root_fill_root_el(struct ocfs2_extent_tree *et) in ocfs2_dx_root_fill_root_el() argument
369 struct ocfs2_dx_root_block *dx_root = et->et_object; in ocfs2_dx_root_fill_root_el()
371 et->et_root_el = &dx_root->dr_list; in ocfs2_dx_root_fill_root_el()
382 static void ocfs2_refcount_tree_fill_root_el(struct ocfs2_extent_tree *et) in ocfs2_refcount_tree_fill_root_el() argument
384 struct ocfs2_refcount_block *rb = et->et_object; in ocfs2_refcount_tree_fill_root_el()
386 et->et_root_el = &rb->rf_list; in ocfs2_refcount_tree_fill_root_el()
389 static void ocfs2_refcount_tree_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_refcount_tree_set_last_eb_blk() argument
392 struct ocfs2_refcount_block *rb = et->et_object; in ocfs2_refcount_tree_set_last_eb_blk()
397 static u64 ocfs2_refcount_tree_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_refcount_tree_get_last_eb_blk() argument
399 struct ocfs2_refcount_block *rb = et->et_object; in ocfs2_refcount_tree_get_last_eb_blk()
404 static void ocfs2_refcount_tree_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_refcount_tree_update_clusters() argument
407 struct ocfs2_refcount_block *rb = et->et_object; in ocfs2_refcount_tree_update_clusters()
413 ocfs2_refcount_tree_extent_contig(struct ocfs2_extent_tree *et, in ocfs2_refcount_tree_extent_contig() argument
428 static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et, in __ocfs2_init_extent_tree() argument
435 et->et_ops = ops; in __ocfs2_init_extent_tree()
436 et->et_root_bh = bh; in __ocfs2_init_extent_tree()
437 et->et_ci = ci; in __ocfs2_init_extent_tree()
438 et->et_root_journal_access = access; in __ocfs2_init_extent_tree()
441 et->et_object = obj; in __ocfs2_init_extent_tree()
442 et->et_dealloc = NULL; in __ocfs2_init_extent_tree()
444 et->et_ops->eo_fill_root_el(et); in __ocfs2_init_extent_tree()
445 if (!et->et_ops->eo_fill_max_leaf_clusters) in __ocfs2_init_extent_tree()
446 et->et_max_leaf_clusters = 0; in __ocfs2_init_extent_tree()
448 et->et_ops->eo_fill_max_leaf_clusters(et); in __ocfs2_init_extent_tree()
451 void ocfs2_init_dinode_extent_tree(struct ocfs2_extent_tree *et, in ocfs2_init_dinode_extent_tree() argument
455 __ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_di, in ocfs2_init_dinode_extent_tree()
459 void ocfs2_init_xattr_tree_extent_tree(struct ocfs2_extent_tree *et, in ocfs2_init_xattr_tree_extent_tree() argument
463 __ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_xb, in ocfs2_init_xattr_tree_extent_tree()
467 void ocfs2_init_xattr_value_extent_tree(struct ocfs2_extent_tree *et, in ocfs2_init_xattr_value_extent_tree() argument
471 __ocfs2_init_extent_tree(et, ci, vb->vb_bh, vb->vb_access, vb, in ocfs2_init_xattr_value_extent_tree()
475 void ocfs2_init_dx_root_extent_tree(struct ocfs2_extent_tree *et, in ocfs2_init_dx_root_extent_tree() argument
479 __ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_dr, in ocfs2_init_dx_root_extent_tree()
483 void ocfs2_init_refcount_extent_tree(struct ocfs2_extent_tree *et, in ocfs2_init_refcount_extent_tree() argument
487 __ocfs2_init_extent_tree(et, ci, bh, ocfs2_journal_access_rb, in ocfs2_init_refcount_extent_tree()
491 static inline void ocfs2_et_set_last_eb_blk(struct ocfs2_extent_tree *et, in ocfs2_et_set_last_eb_blk() argument
494 et->et_ops->eo_set_last_eb_blk(et, new_last_eb_blk); in ocfs2_et_set_last_eb_blk()
497 static inline u64 ocfs2_et_get_last_eb_blk(struct ocfs2_extent_tree *et) in ocfs2_et_get_last_eb_blk() argument
499 return et->et_ops->eo_get_last_eb_blk(et); in ocfs2_et_get_last_eb_blk()
502 static inline void ocfs2_et_update_clusters(struct ocfs2_extent_tree *et, in ocfs2_et_update_clusters() argument
505 et->et_ops->eo_update_clusters(et, clusters); in ocfs2_et_update_clusters()
508 static inline void ocfs2_et_extent_map_insert(struct ocfs2_extent_tree *et, in ocfs2_et_extent_map_insert() argument
511 if (et->et_ops->eo_extent_map_insert) in ocfs2_et_extent_map_insert()
512 et->et_ops->eo_extent_map_insert(et, rec); in ocfs2_et_extent_map_insert()
515 static inline void ocfs2_et_extent_map_truncate(struct ocfs2_extent_tree *et, in ocfs2_et_extent_map_truncate() argument
518 if (et->et_ops->eo_extent_map_truncate) in ocfs2_et_extent_map_truncate()
519 et->et_ops->eo_extent_map_truncate(et, clusters); in ocfs2_et_extent_map_truncate()
523 struct ocfs2_extent_tree *et, in ocfs2_et_root_journal_access() argument
526 return et->et_root_journal_access(handle, et->et_ci, et->et_root_bh, in ocfs2_et_root_journal_access()
531 ocfs2_et_extent_contig(struct ocfs2_extent_tree *et, in ocfs2_et_extent_contig() argument
535 if (et->et_ops->eo_extent_contig) in ocfs2_et_extent_contig()
536 return et->et_ops->eo_extent_contig(et, rec, insert_rec); in ocfs2_et_extent_contig()
539 ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_et_extent_contig()
543 static inline int ocfs2_et_insert_check(struct ocfs2_extent_tree *et, in ocfs2_et_insert_check() argument
548 if (et->et_ops->eo_insert_check) in ocfs2_et_insert_check()
549 ret = et->et_ops->eo_insert_check(et, rec); in ocfs2_et_insert_check()
553 static inline int ocfs2_et_sanity_check(struct ocfs2_extent_tree *et) in ocfs2_et_sanity_check() argument
557 if (et->et_ops->eo_sanity_check) in ocfs2_et_sanity_check()
558 ret = et->et_ops->eo_sanity_check(et); in ocfs2_et_sanity_check()
565 struct ocfs2_extent_tree *et,
706 struct ocfs2_path *ocfs2_new_path_from_et(struct ocfs2_extent_tree *et) in ocfs2_new_path_from_et() argument
708 return ocfs2_new_path(et->et_root_bh, et->et_root_el, in ocfs2_new_path_from_et()
709 et->et_root_journal_access); in ocfs2_new_path_from_et()
948 int ocfs2_num_free_extents(struct ocfs2_extent_tree *et) in ocfs2_num_free_extents() argument
956 el = et->et_root_el; in ocfs2_num_free_extents()
957 last_eb_blk = ocfs2_et_get_last_eb_blk(et); in ocfs2_num_free_extents()
960 retval = ocfs2_read_extent_block(et->et_ci, last_eb_blk, in ocfs2_num_free_extents()
971 retval = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_num_free_extents()
973 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_num_free_extents()
993 struct ocfs2_extent_tree *et, in ocfs2_create_new_meta_bhs() argument
1003 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_create_new_meta_bhs()
1027 ocfs2_set_new_buffer_uptodate(et->et_ci, bhs[i]); in ocfs2_create_new_meta_bhs()
1029 status = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_create_new_meta_bhs()
1099 struct ocfs2_extent_tree *et) in ocfs2_adjust_rightmost_branch() argument
1106 path = ocfs2_new_path_from_et(et); in ocfs2_adjust_rightmost_branch()
1112 status = ocfs2_find_path(et->et_ci, path, UINT_MAX); in ocfs2_adjust_rightmost_branch()
1124 status = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_adjust_rightmost_branch()
1133 ocfs2_adjust_rightmost_records(handle, et, path, rec); in ocfs2_adjust_rightmost_branch()
1152 struct ocfs2_extent_tree *et, in ocfs2_add_branch() argument
1172 el = et->et_root_el; in ocfs2_add_branch()
1181 root_end = ocfs2_sum_rightmost_rec(et->et_root_el); in ocfs2_add_branch()
1193 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_add_branch()
1196 status = ocfs2_adjust_rightmost_branch(handle, et); in ocfs2_add_branch()
1215 if (!ocfs2_is_dealloc_empty(et)) { in ocfs2_add_branch()
1216 status = ocfs2_reuse_blk_from_dealloc(handle, et, in ocfs2_add_branch()
1229 status = ocfs2_create_new_meta_bhs(handle, et, in ocfs2_add_branch()
1254 status = ocfs2_journal_access_eb(handle, et->et_ci, bh, in ocfs2_add_branch()
1289 status = ocfs2_journal_access_eb(handle, et->et_ci, *last_eb_bh, in ocfs2_add_branch()
1295 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_add_branch()
1302 status = ocfs2_journal_access_eb(handle, et->et_ci, eb_bh, in ocfs2_add_branch()
1320 ocfs2_et_set_last_eb_blk(et, new_last_eb_blk); in ocfs2_add_branch()
1326 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_add_branch()
1355 struct ocfs2_extent_tree *et, in ocfs2_shift_tree_depth() argument
1366 if (!ocfs2_is_dealloc_empty(et)) { in ocfs2_shift_tree_depth()
1367 status = ocfs2_reuse_blk_from_dealloc(handle, et, in ocfs2_shift_tree_depth()
1371 status = ocfs2_create_new_meta_bhs(handle, et, 1, meta_ac, in ocfs2_shift_tree_depth()
1388 root_el = et->et_root_el; in ocfs2_shift_tree_depth()
1390 status = ocfs2_journal_access_eb(handle, et->et_ci, new_eb_bh, in ocfs2_shift_tree_depth()
1405 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_shift_tree_depth()
1426 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_shift_tree_depth()
1428 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_shift_tree_depth()
1456 static int ocfs2_find_branch_target(struct ocfs2_extent_tree *et, in ocfs2_find_branch_target() argument
1468 el = et->et_root_el; in ocfs2_find_branch_target()
1472 status = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_find_branch_target()
1474 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci)); in ocfs2_find_branch_target()
1480 status = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_find_branch_target()
1482 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), i); in ocfs2_find_branch_target()
1489 status = ocfs2_read_extent_block(et->et_ci, blkno, &bh); in ocfs2_find_branch_target()
1508 el = et->et_root_el; in ocfs2_find_branch_target()
1529 static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et, in ocfs2_grow_tree() argument
1534 struct ocfs2_extent_list *el = et->et_root_el; in ocfs2_grow_tree()
1538 BUG_ON(meta_ac == NULL && ocfs2_is_dealloc_empty(et)); in ocfs2_grow_tree()
1540 shift = ocfs2_find_branch_target(et, &bh); in ocfs2_grow_tree()
1554 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_grow_tree()
1560 ret = ocfs2_shift_tree_depth(handle, et, meta_ac, &bh); in ocfs2_grow_tree()
1585 ret = ocfs2_add_branch(handle, et, bh, last_eb_bh, in ocfs2_grow_tree()
1754 int ocfs2_find_subtree_root(struct ocfs2_extent_tree *et, in ocfs2_find_subtree_root() argument
1774 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_find_subtree_root()
2121 struct ocfs2_extent_tree *et, in ocfs2_rotate_subtree_right() argument
2137 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_rotate_subtree_right()
2139 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_subtree_right()
2155 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_rotate_subtree_right()
2163 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_right()
2170 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_right()
2184 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_subtree_right()
2376 struct ocfs2_extent_tree *et, in ocfs2_rotate_tree_right() argument
2385 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_rotate_tree_right()
2403 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2435 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2438 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_rotate_tree_right()
2449 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2476 start = ocfs2_find_subtree_root(et, left_path, right_path); in ocfs2_rotate_tree_right()
2490 ret = ocfs2_rotate_subtree_right(handle, et, left_path, in ocfs2_rotate_tree_right()
2537 struct ocfs2_extent_tree *et, in ocfs2_update_edge_lengths() argument
2546 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_update_edge_lengths()
2577 struct ocfs2_extent_tree *et, in ocfs2_unlink_path() argument
2599 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_unlink_path()
2604 ocfs2_remove_from_cache(et->et_ci, bh); in ocfs2_unlink_path()
2617 ocfs2_remove_from_cache(et->et_ci, bh); in ocfs2_unlink_path()
2622 struct ocfs2_extent_tree *et, in ocfs2_unlink_subtree() argument
2650 ocfs2_unlink_path(handle, et, dealloc, right_path, in ocfs2_unlink_subtree()
2655 struct ocfs2_extent_tree *et, in ocfs2_rotate_subtree_left() argument
2696 ret = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2715 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_rotate_subtree_left()
2731 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_rotate_subtree_left()
2739 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2746 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2779 ocfs2_unlink_subtree(handle, et, left_path, right_path, in ocfs2_rotate_subtree_left()
2781 ret = ocfs2_update_edge_lengths(handle, et, left_path); in ocfs2_rotate_subtree_left()
2788 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_rotate_subtree_left()
2888 struct ocfs2_extent_tree *et, in ocfs2_rotate_rightmost_leaf_left() argument
2898 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, path, in ocfs2_rotate_rightmost_leaf_left()
2913 struct ocfs2_extent_tree *et, in __ocfs2_rotate_tree_left() argument
2923 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in __ocfs2_rotate_tree_left()
2953 ret = ocfs2_find_path(et->et_ci, right_path, right_cpos); in __ocfs2_rotate_tree_left()
2959 subtree_root = ocfs2_find_subtree_root(et, left_path, in __ocfs2_rotate_tree_left()
2978 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in __ocfs2_rotate_tree_left()
2985 ret = ocfs2_rotate_subtree_left(handle, et, left_path, in __ocfs2_rotate_tree_left()
3030 struct ocfs2_extent_tree *et, in ocfs2_remove_rightmost_path() argument
3040 ret = ocfs2_et_sanity_check(et); in ocfs2_remove_rightmost_path()
3044 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_remove_rightmost_path()
3050 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_rightmost_path()
3069 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_remove_rightmost_path()
3075 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_remove_rightmost_path()
3081 subtree_index = ocfs2_find_subtree_root(et, left_path, path); in ocfs2_remove_rightmost_path()
3083 ocfs2_unlink_subtree(handle, et, left_path, path, in ocfs2_remove_rightmost_path()
3085 ret = ocfs2_update_edge_lengths(handle, et, left_path); in ocfs2_remove_rightmost_path()
3092 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_remove_rightmost_path()
3101 ocfs2_unlink_path(handle, et, dealloc, path, 1); in ocfs2_remove_rightmost_path()
3103 el = et->et_root_el; in ocfs2_remove_rightmost_path()
3108 ocfs2_et_set_last_eb_blk(et, 0); in ocfs2_remove_rightmost_path()
3119 struct ocfs2_extent_tree *et, in ocfs2_remove_rightmost_empty_extent() argument
3134 ret = ocfs2_remove_rightmost_path(handle, et, path, dealloc); in ocfs2_remove_rightmost_empty_extent()
3159 struct ocfs2_extent_tree *et, in ocfs2_rotate_tree_left() argument
3178 ret = ocfs2_rotate_rightmost_leaf_left(handle, et, path); in ocfs2_rotate_tree_left()
3209 ret = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_rotate_tree_left()
3211 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_left()
3225 ret = ocfs2_remove_rightmost_path(handle, et, path, in ocfs2_rotate_tree_left()
3237 ret = __ocfs2_rotate_tree_left(handle, et, orig_credits, path, in ocfs2_rotate_tree_left()
3248 ret = __ocfs2_rotate_tree_left(handle, et, orig_credits, in ocfs2_rotate_tree_left()
3301 static int ocfs2_get_right_path(struct ocfs2_extent_tree *et, in ocfs2_get_right_path() argument
3318 ret = ocfs2_find_cpos_for_right_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_get_right_path()
3335 ret = ocfs2_find_path(et->et_ci, right_path, right_cpos); in ocfs2_get_right_path()
3357 struct ocfs2_extent_tree *et, in ocfs2_merge_rec_right() argument
3378 ret = ocfs2_get_right_path(et, left_path, &right_path); in ocfs2_merge_rec_right()
3397 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_merge_rec_right()
3411 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_right()
3420 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_right()
3427 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_right()
3440 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, left_path, in ocfs2_merge_rec_right()
3451 -ocfs2_clusters_to_blocks(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_merge_rec_right()
3468 static int ocfs2_get_left_path(struct ocfs2_extent_tree *et, in ocfs2_get_left_path() argument
3481 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_get_left_path()
3498 ret = ocfs2_find_path(et->et_ci, left_path, left_cpos); in ocfs2_get_left_path()
3523 struct ocfs2_extent_tree *et, in ocfs2_merge_rec_left() argument
3543 ret = ocfs2_get_left_path(et, right_path, &left_path); in ocfs2_merge_rec_left()
3559 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_merge_rec_left()
3573 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_left()
3582 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_left()
3589 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_left()
3602 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_left()
3619 ocfs2_clusters_to_blocks(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_merge_rec_left()
3645 ret = ocfs2_remove_rightmost_path(handle, et, in ocfs2_merge_rec_left()
3668 struct ocfs2_extent_tree *et, in ocfs2_try_to_merge_extent() argument
3697 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3726 ret = ocfs2_merge_rec_right(path, handle, et, split_rec, in ocfs2_try_to_merge_extent()
3748 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3760 ret = ocfs2_merge_rec_left(path, handle, et, rec, in ocfs2_try_to_merge_extent()
3777 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3794 ret = ocfs2_merge_rec_left(path, handle, et, in ocfs2_try_to_merge_extent()
3803 et, split_rec, in ocfs2_try_to_merge_extent()
3826 ret = ocfs2_rotate_tree_left(handle, et, path, in ocfs2_try_to_merge_extent()
3873 static void ocfs2_insert_at_leaf(struct ocfs2_extent_tree *et, in ocfs2_insert_at_leaf() argument
3888 ocfs2_subtract_from_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_insert_at_leaf()
3934 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_insert_at_leaf()
3963 struct ocfs2_extent_tree *et, in ocfs2_adjust_rightmost_records() argument
3981 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_adjust_rightmost_records()
3983 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci)); in ocfs2_adjust_rightmost_records()
4000 struct ocfs2_extent_tree *et, in ocfs2_append_rec_to_path() argument
4028 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_append_rec_to_path()
4037 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_append_rec_to_path()
4053 ret = ocfs2_find_path(et->et_ci, left_path, in ocfs2_append_rec_to_path()
4067 ret = ocfs2_journal_access_path(et->et_ci, handle, right_path); in ocfs2_append_rec_to_path()
4073 ocfs2_adjust_rightmost_records(handle, et, right_path, insert_rec); in ocfs2_append_rec_to_path()
4084 static void ocfs2_split_record(struct ocfs2_extent_tree *et, in ocfs2_split_record() argument
4157 ocfs2_subtract_from_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_record()
4171 struct ocfs2_extent_tree *et, in ocfs2_insert_path() argument
4193 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_insert_path()
4204 ret = ocfs2_journal_access_path(et->et_ci, handle, right_path); in ocfs2_insert_path()
4216 ocfs2_split_record(et, left_path, right_path, in ocfs2_insert_path()
4228 ocfs2_insert_at_leaf(et, insert_rec, path_leaf_el(right_path), in ocfs2_insert_path()
4240 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_insert_path()
4252 struct ocfs2_extent_tree *et, in ocfs2_do_insert_extent() argument
4262 el = et->et_root_el; in ocfs2_do_insert_extent()
4264 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_do_insert_extent()
4272 ocfs2_insert_at_leaf(et, insert_rec, el, type); in ocfs2_do_insert_extent()
4276 right_path = ocfs2_new_path_from_et(et); in ocfs2_do_insert_extent()
4295 ret = ocfs2_find_path(et->et_ci, right_path, cpos); in ocfs2_do_insert_extent()
4314 ret = ocfs2_rotate_tree_right(handle, et, type->ins_split, in ocfs2_do_insert_extent()
4326 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_do_insert_extent()
4334 ret = ocfs2_append_rec_to_path(handle, et, insert_rec, in ocfs2_do_insert_extent()
4342 ret = ocfs2_insert_path(handle, et, left_path, right_path, in ocfs2_do_insert_extent()
4351 ocfs2_et_update_clusters(et, in ocfs2_do_insert_extent()
4354 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_do_insert_extent()
4363 static int ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, in ocfs2_figure_merge_contig_type() argument
4377 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_figure_merge_contig_type()
4394 status = ocfs2_find_path(et->et_ci, left_path, in ocfs2_figure_merge_contig_type()
4426 ret = ocfs2_et_extent_contig(et, rec, split_rec); in ocfs2_figure_merge_contig_type()
4449 status = ocfs2_find_path(et->et_ci, right_path, right_cpos); in ocfs2_figure_merge_contig_type()
4472 contig_type = ocfs2_et_extent_contig(et, rec, split_rec); in ocfs2_figure_merge_contig_type()
4491 static void ocfs2_figure_contig_type(struct ocfs2_extent_tree *et, in ocfs2_figure_contig_type() argument
4502 contig_type = ocfs2_et_extent_contig(et, &el->l_recs[i], in ocfs2_figure_contig_type()
4521 if (et->et_max_leaf_clusters && in ocfs2_figure_contig_type()
4522 (len > et->et_max_leaf_clusters)) in ocfs2_figure_contig_type()
4584 static int ocfs2_figure_insert_type(struct ocfs2_extent_tree *et, in ocfs2_figure_insert_type() argument
4598 el = et->et_root_el; in ocfs2_figure_insert_type()
4608 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_figure_insert_type()
4609 ocfs2_et_get_last_eb_blk(et), in ocfs2_figure_insert_type()
4631 ocfs2_figure_contig_type(et, insert, el, insert_rec); in ocfs2_figure_insert_type()
4636 path = ocfs2_new_path_from_et(et); in ocfs2_figure_insert_type()
4649 ret = ocfs2_find_path(et->et_ci, path, le32_to_cpu(insert_rec->e_cpos)); in ocfs2_figure_insert_type()
4665 ocfs2_figure_contig_type(et, insert, el, insert_rec); in ocfs2_figure_insert_type()
4686 if (ocfs2_et_get_last_eb_blk(et) == in ocfs2_figure_insert_type()
4715 struct ocfs2_extent_tree *et, in ocfs2_insert_extent() argument
4729 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_insert_extent()
4737 status = ocfs2_et_insert_check(et, &rec); in ocfs2_insert_extent()
4743 status = ocfs2_figure_insert_type(et, &last_eb_bh, &rec, in ocfs2_insert_extent()
4755 status = ocfs2_grow_tree(handle, et, in ocfs2_insert_extent()
4765 status = ocfs2_do_insert_extent(handle, et, &rec, &insert); in ocfs2_insert_extent()
4769 ocfs2_et_extent_map_insert(et, &rec); in ocfs2_insert_extent()
4780 * The extent b-tree's root is specified by et, and
4785 struct ocfs2_extent_tree *et, in ocfs2_add_clusters_in_btree() argument
4801 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_add_clusters_in_btree()
4808 free_extents = ocfs2_num_free_extents(et); in ocfs2_add_clusters_in_btree()
4827 < ocfs2_extend_meta_needed(et->et_root_el))) { in ocfs2_add_clusters_in_btree()
4845 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_add_clusters_in_btree()
4855 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_add_clusters_in_btree()
4857 status = ocfs2_insert_extent(handle, et, *logical_offset, block, in ocfs2_add_clusters_in_btree()
4865 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_add_clusters_in_btree()
4917 struct ocfs2_extent_tree *et, in ocfs2_split_and_insert() argument
4940 rightmost_el = et->et_root_el; in ocfs2_split_and_insert()
4951 ret = ocfs2_grow_tree(handle, et, in ocfs2_split_and_insert()
4980 ocfs2_make_right_split_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_and_insert()
4989 ret = ocfs2_do_insert_extent(handle, et, &split_rec, &insert); in ocfs2_split_and_insert()
5005 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_split_and_insert()
5014 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_and_insert()
5016 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_split_and_insert()
5029 struct ocfs2_extent_tree *et, in ocfs2_replace_extent_rec() argument
5037 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, path, in ocfs2_replace_extent_rec()
5071 struct ocfs2_extent_tree *et, in ocfs2_split_extent() argument
5092 ret = ocfs2_figure_merge_contig_type(et, path, el, in ocfs2_split_extent()
5107 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_split_extent()
5108 ocfs2_et_get_last_eb_blk(et), in ocfs2_split_extent()
5130 ret = ocfs2_replace_extent_rec(handle, et, path, el, in ocfs2_split_extent()
5133 ret = ocfs2_split_and_insert(handle, et, path, in ocfs2_split_extent()
5139 ret = ocfs2_try_to_merge_extent(handle, et, path, in ocfs2_split_extent()
5164 struct ocfs2_extent_tree *et, in ocfs2_change_extent_flag() argument
5171 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_change_extent_flag()
5178 left_path = ocfs2_new_path_from_et(et); in ocfs2_change_extent_flag()
5185 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_change_extent_flag()
5196 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5207 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5215 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5230 ret = ocfs2_split_extent(handle, et, left_path, in ocfs2_change_extent_flag()
5252 struct ocfs2_extent_tree *et, in ocfs2_mark_extent_written() argument
5274 ocfs2_et_extent_map_truncate(et, 0); in ocfs2_mark_extent_written()
5276 ret = ocfs2_change_extent_flag(handle, et, cpos, in ocfs2_mark_extent_written()
5286 static int ocfs2_split_tree(handle_t *handle, struct ocfs2_extent_tree *et, in ocfs2_split_tree() argument
5304 ocfs2_make_right_split_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_tree()
5309 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_split_tree()
5310 ocfs2_et_get_last_eb_blk(et), in ocfs2_split_tree()
5323 ocfs2_extend_meta_needed(et->et_root_el); in ocfs2_split_tree()
5332 ret = ocfs2_grow_tree(handle, et, &depth, &last_eb_bh, in ocfs2_split_tree()
5346 ret = ocfs2_do_insert_extent(handle, et, &split_rec, &insert); in ocfs2_split_tree()
5356 struct ocfs2_extent_tree *et, in ocfs2_truncate_rec() argument
5364 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_truncate_rec()
5380 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_truncate_rec()
5432 ret = ocfs2_find_path(et->et_ci, left_path, in ocfs2_truncate_rec()
5449 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_truncate_rec()
5455 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_truncate_rec()
5477 ocfs2_adjust_rightmost_records(handle, et, path, in ocfs2_truncate_rec()
5489 ocfs2_adjust_rightmost_records(handle, et, path, rec); in ocfs2_truncate_rec()
5494 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_truncate_rec()
5503 subtree_index = ocfs2_find_subtree_root(et, left_path, path); in ocfs2_truncate_rec()
5510 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_truncate_rec()
5520 struct ocfs2_extent_tree *et, in ocfs2_remove_extent() argument
5535 ocfs2_et_extent_map_truncate(et, 0); in ocfs2_remove_extent()
5537 path = ocfs2_new_path_from_et(et); in ocfs2_remove_extent()
5544 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_remove_extent()
5553 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5555 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5584 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5589 ret = ocfs2_truncate_rec(handle, et, path, index, dealloc, in ocfs2_remove_extent()
5596 ret = ocfs2_split_tree(handle, et, path, index, in ocfs2_remove_extent()
5609 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_remove_extent()
5618 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5620 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5634 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5636 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5643 ret = ocfs2_truncate_rec(handle, et, path, index, dealloc, in ocfs2_remove_extent()
5664 struct ocfs2_extent_tree *et, in ocfs2_reserve_blocks_for_rec_trunc() argument
5675 num_free_extents = ocfs2_num_free_extents(et); in ocfs2_reserve_blocks_for_rec_trunc()
5684 extra_blocks += ocfs2_extend_meta_needed(et->et_root_el); in ocfs2_reserve_blocks_for_rec_trunc()
5706 struct ocfs2_extent_tree *et, in ocfs2_remove_btree_range() argument
5743 ret = ocfs2_reserve_blocks_for_rec_trunc(inode, et, 1, &meta_ac, in ocfs2_remove_btree_range()
5768 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_remove_btree_range()
5778 ret = ocfs2_remove_extent(handle, et, cpos, len, meta_ac, dealloc); in ocfs2_remove_btree_range()
5784 ocfs2_et_update_clusters(et, -len); in ocfs2_remove_btree_range()
5787 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_remove_btree_range()
6658 static int ocfs2_is_dealloc_empty(struct ocfs2_extent_tree *et) in ocfs2_is_dealloc_empty() argument
6662 if (!et->et_dealloc) in ocfs2_is_dealloc_empty()
6665 fl = et->et_dealloc->c_first_suballocator; in ocfs2_is_dealloc_empty()
6682 struct ocfs2_extent_tree *et, in ocfs2_reuse_blk_from_dealloc() argument
6692 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_reuse_blk_from_dealloc()
6700 dealloc = et->et_dealloc; in ocfs2_reuse_blk_from_dealloc()
6731 ocfs2_set_new_buffer_uptodate(et->et_ci, new_eb_bh[i]); in ocfs2_reuse_blk_from_dealloc()
6733 status = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_reuse_blk_from_dealloc()
7091 struct ocfs2_extent_tree et; in ocfs2_convert_inline_data_to_extents() local
7184 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); in ocfs2_convert_inline_data_to_extents()
7185 ret = ocfs2_insert_extent(handle, &et, 0, block, 1, 0, NULL); in ocfs2_convert_inline_data_to_extents()
7243 struct ocfs2_extent_tree et; in ocfs2_commit_truncate() local
7247 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); in ocfs2_commit_truncate()
7323 &et, path, &dealloc); in ocfs2_commit_truncate()
7372 status = ocfs2_remove_btree_range(inode, &et, trunc_cpos, in ocfs2_commit_truncate()