• Home
  • Raw
  • Download

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()
986 struct ocfs2_extent_tree *et, in ocfs2_create_new_meta_bhs() argument
996 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_create_new_meta_bhs()
1020 ocfs2_set_new_buffer_uptodate(et->et_ci, bhs[i]); in ocfs2_create_new_meta_bhs()
1022 status = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_create_new_meta_bhs()
1092 struct ocfs2_extent_tree *et) in ocfs2_adjust_rightmost_branch() argument
1099 path = ocfs2_new_path_from_et(et); in ocfs2_adjust_rightmost_branch()
1105 status = ocfs2_find_path(et->et_ci, path, UINT_MAX); in ocfs2_adjust_rightmost_branch()
1117 status = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_adjust_rightmost_branch()
1126 ocfs2_adjust_rightmost_records(handle, et, path, rec); in ocfs2_adjust_rightmost_branch()
1145 struct ocfs2_extent_tree *et, in ocfs2_add_branch() argument
1165 el = et->et_root_el; in ocfs2_add_branch()
1174 root_end = ocfs2_sum_rightmost_rec(et->et_root_el); in ocfs2_add_branch()
1186 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_add_branch()
1189 status = ocfs2_adjust_rightmost_branch(handle, et); in ocfs2_add_branch()
1208 if (!ocfs2_is_dealloc_empty(et)) { in ocfs2_add_branch()
1209 status = ocfs2_reuse_blk_from_dealloc(handle, et, in ocfs2_add_branch()
1222 status = ocfs2_create_new_meta_bhs(handle, et, in ocfs2_add_branch()
1247 status = ocfs2_journal_access_eb(handle, et->et_ci, bh, in ocfs2_add_branch()
1282 status = ocfs2_journal_access_eb(handle, et->et_ci, *last_eb_bh, in ocfs2_add_branch()
1288 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_add_branch()
1295 status = ocfs2_journal_access_eb(handle, et->et_ci, eb_bh, in ocfs2_add_branch()
1313 ocfs2_et_set_last_eb_blk(et, new_last_eb_blk); in ocfs2_add_branch()
1319 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_add_branch()
1348 struct ocfs2_extent_tree *et, in ocfs2_shift_tree_depth() argument
1359 if (!ocfs2_is_dealloc_empty(et)) { in ocfs2_shift_tree_depth()
1360 status = ocfs2_reuse_blk_from_dealloc(handle, et, in ocfs2_shift_tree_depth()
1364 status = ocfs2_create_new_meta_bhs(handle, et, 1, meta_ac, in ocfs2_shift_tree_depth()
1381 root_el = et->et_root_el; in ocfs2_shift_tree_depth()
1383 status = ocfs2_journal_access_eb(handle, et->et_ci, new_eb_bh, in ocfs2_shift_tree_depth()
1398 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_shift_tree_depth()
1419 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_shift_tree_depth()
1421 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_shift_tree_depth()
1449 static int ocfs2_find_branch_target(struct ocfs2_extent_tree *et, in ocfs2_find_branch_target() argument
1461 el = et->et_root_el; in ocfs2_find_branch_target()
1465 status = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_find_branch_target()
1467 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci)); in ocfs2_find_branch_target()
1473 status = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_find_branch_target()
1475 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), i); in ocfs2_find_branch_target()
1482 status = ocfs2_read_extent_block(et->et_ci, blkno, &bh); in ocfs2_find_branch_target()
1501 el = et->et_root_el; in ocfs2_find_branch_target()
1522 static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et, in ocfs2_grow_tree() argument
1527 struct ocfs2_extent_list *el = et->et_root_el; in ocfs2_grow_tree()
1531 BUG_ON(meta_ac == NULL && ocfs2_is_dealloc_empty(et)); in ocfs2_grow_tree()
1533 shift = ocfs2_find_branch_target(et, &bh); in ocfs2_grow_tree()
1547 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_grow_tree()
1553 ret = ocfs2_shift_tree_depth(handle, et, meta_ac, &bh); in ocfs2_grow_tree()
1578 ret = ocfs2_add_branch(handle, et, bh, last_eb_bh, in ocfs2_grow_tree()
1747 int ocfs2_find_subtree_root(struct ocfs2_extent_tree *et, in ocfs2_find_subtree_root() argument
1767 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_find_subtree_root()
2114 struct ocfs2_extent_tree *et, in ocfs2_rotate_subtree_right() argument
2130 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_rotate_subtree_right()
2132 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_subtree_right()
2148 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_rotate_subtree_right()
2156 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_right()
2163 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_right()
2177 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_subtree_right()
2369 struct ocfs2_extent_tree *et, in ocfs2_rotate_tree_right() argument
2378 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_rotate_tree_right()
2396 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2428 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2431 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_rotate_tree_right()
2442 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_right()
2469 start = ocfs2_find_subtree_root(et, left_path, right_path); in ocfs2_rotate_tree_right()
2483 ret = ocfs2_rotate_subtree_right(handle, et, left_path, in ocfs2_rotate_tree_right()
2530 struct ocfs2_extent_tree *et, in ocfs2_update_edge_lengths() argument
2539 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_update_edge_lengths()
2570 struct ocfs2_extent_tree *et, in ocfs2_unlink_path() argument
2592 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_unlink_path()
2597 ocfs2_remove_from_cache(et->et_ci, bh); in ocfs2_unlink_path()
2610 ocfs2_remove_from_cache(et->et_ci, bh); in ocfs2_unlink_path()
2615 struct ocfs2_extent_tree *et, in ocfs2_unlink_subtree() argument
2643 ocfs2_unlink_path(handle, et, dealloc, right_path, in ocfs2_unlink_subtree()
2648 struct ocfs2_extent_tree *et, in ocfs2_rotate_subtree_left() argument
2689 ret = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2708 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_rotate_subtree_left()
2724 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_rotate_subtree_left()
2732 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2739 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_rotate_subtree_left()
2772 ocfs2_unlink_subtree(handle, et, left_path, right_path, in ocfs2_rotate_subtree_left()
2774 ret = ocfs2_update_edge_lengths(handle, et, left_path); in ocfs2_rotate_subtree_left()
2781 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_rotate_subtree_left()
2881 struct ocfs2_extent_tree *et, in ocfs2_rotate_rightmost_leaf_left() argument
2891 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, path, in ocfs2_rotate_rightmost_leaf_left()
2906 struct ocfs2_extent_tree *et, in __ocfs2_rotate_tree_left() argument
2916 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in __ocfs2_rotate_tree_left()
2946 ret = ocfs2_find_path(et->et_ci, right_path, right_cpos); in __ocfs2_rotate_tree_left()
2952 subtree_root = ocfs2_find_subtree_root(et, left_path, in __ocfs2_rotate_tree_left()
2971 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in __ocfs2_rotate_tree_left()
2978 ret = ocfs2_rotate_subtree_left(handle, et, left_path, in __ocfs2_rotate_tree_left()
3023 struct ocfs2_extent_tree *et, in ocfs2_remove_rightmost_path() argument
3033 ret = ocfs2_et_sanity_check(et); in ocfs2_remove_rightmost_path()
3037 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_remove_rightmost_path()
3043 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_rightmost_path()
3062 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_remove_rightmost_path()
3068 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_remove_rightmost_path()
3074 subtree_index = ocfs2_find_subtree_root(et, left_path, path); in ocfs2_remove_rightmost_path()
3076 ocfs2_unlink_subtree(handle, et, left_path, path, in ocfs2_remove_rightmost_path()
3078 ret = ocfs2_update_edge_lengths(handle, et, left_path); in ocfs2_remove_rightmost_path()
3085 ocfs2_et_set_last_eb_blk(et, le64_to_cpu(eb->h_blkno)); in ocfs2_remove_rightmost_path()
3094 ocfs2_unlink_path(handle, et, dealloc, path, 1); in ocfs2_remove_rightmost_path()
3096 el = et->et_root_el; in ocfs2_remove_rightmost_path()
3101 ocfs2_et_set_last_eb_blk(et, 0); in ocfs2_remove_rightmost_path()
3112 struct ocfs2_extent_tree *et, in ocfs2_remove_rightmost_empty_extent() argument
3127 ret = ocfs2_remove_rightmost_path(handle, et, path, dealloc); in ocfs2_remove_rightmost_empty_extent()
3152 struct ocfs2_extent_tree *et, in ocfs2_rotate_tree_left() argument
3171 ret = ocfs2_rotate_rightmost_leaf_left(handle, et, path); in ocfs2_rotate_tree_left()
3202 ret = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_rotate_tree_left()
3204 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_rotate_tree_left()
3218 ret = ocfs2_remove_rightmost_path(handle, et, path, in ocfs2_rotate_tree_left()
3230 ret = __ocfs2_rotate_tree_left(handle, et, orig_credits, path, in ocfs2_rotate_tree_left()
3241 ret = __ocfs2_rotate_tree_left(handle, et, orig_credits, in ocfs2_rotate_tree_left()
3294 static int ocfs2_get_right_path(struct ocfs2_extent_tree *et, in ocfs2_get_right_path() argument
3311 ret = ocfs2_find_cpos_for_right_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_get_right_path()
3328 ret = ocfs2_find_path(et->et_ci, right_path, right_cpos); in ocfs2_get_right_path()
3350 struct ocfs2_extent_tree *et, in ocfs2_merge_rec_right() argument
3371 ret = ocfs2_get_right_path(et, left_path, &right_path); in ocfs2_merge_rec_right()
3390 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_merge_rec_right()
3404 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_right()
3413 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_right()
3420 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_right()
3433 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, left_path, in ocfs2_merge_rec_right()
3444 -ocfs2_clusters_to_blocks(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_merge_rec_right()
3461 static int ocfs2_get_left_path(struct ocfs2_extent_tree *et, in ocfs2_get_left_path() argument
3474 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_get_left_path()
3491 ret = ocfs2_find_path(et->et_ci, left_path, left_cpos); in ocfs2_get_left_path()
3516 struct ocfs2_extent_tree *et, in ocfs2_merge_rec_left() argument
3536 ret = ocfs2_get_left_path(et, right_path, &left_path); in ocfs2_merge_rec_left()
3552 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_merge_rec_left()
3566 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_left()
3575 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_left()
3582 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, in ocfs2_merge_rec_left()
3595 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, right_path, in ocfs2_merge_rec_left()
3612 ocfs2_clusters_to_blocks(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_merge_rec_left()
3638 ret = ocfs2_remove_rightmost_path(handle, et, in ocfs2_merge_rec_left()
3661 struct ocfs2_extent_tree *et, in ocfs2_try_to_merge_extent() argument
3690 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3719 ret = ocfs2_merge_rec_right(path, handle, et, split_rec, in ocfs2_try_to_merge_extent()
3741 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3753 ret = ocfs2_merge_rec_left(path, handle, et, rec, in ocfs2_try_to_merge_extent()
3770 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_try_to_merge_extent()
3787 ret = ocfs2_merge_rec_left(path, handle, et, in ocfs2_try_to_merge_extent()
3796 et, split_rec, in ocfs2_try_to_merge_extent()
3819 ret = ocfs2_rotate_tree_left(handle, et, path, in ocfs2_try_to_merge_extent()
3866 static void ocfs2_insert_at_leaf(struct ocfs2_extent_tree *et, in ocfs2_insert_at_leaf() argument
3881 ocfs2_subtract_from_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_insert_at_leaf()
3927 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_insert_at_leaf()
3956 struct ocfs2_extent_tree *et, in ocfs2_adjust_rightmost_records() argument
3974 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_adjust_rightmost_records()
3976 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci)); in ocfs2_adjust_rightmost_records()
3993 struct ocfs2_extent_tree *et, in ocfs2_append_rec_to_path() argument
4021 ret = ocfs2_find_cpos_for_left_leaf(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_append_rec_to_path()
4030 ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_append_rec_to_path()
4046 ret = ocfs2_find_path(et->et_ci, left_path, in ocfs2_append_rec_to_path()
4060 ret = ocfs2_journal_access_path(et->et_ci, handle, right_path); in ocfs2_append_rec_to_path()
4066 ocfs2_adjust_rightmost_records(handle, et, right_path, insert_rec); in ocfs2_append_rec_to_path()
4077 static void ocfs2_split_record(struct ocfs2_extent_tree *et, in ocfs2_split_record() argument
4150 ocfs2_subtract_from_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_record()
4164 struct ocfs2_extent_tree *et, in ocfs2_insert_path() argument
4186 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_insert_path()
4197 ret = ocfs2_journal_access_path(et->et_ci, handle, right_path); in ocfs2_insert_path()
4209 ocfs2_split_record(et, left_path, right_path, in ocfs2_insert_path()
4221 ocfs2_insert_at_leaf(et, insert_rec, path_leaf_el(right_path), in ocfs2_insert_path()
4233 subtree_index = ocfs2_find_subtree_root(et, left_path, in ocfs2_insert_path()
4245 struct ocfs2_extent_tree *et, in ocfs2_do_insert_extent() argument
4255 el = et->et_root_el; in ocfs2_do_insert_extent()
4257 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_do_insert_extent()
4265 ocfs2_insert_at_leaf(et, insert_rec, el, type); in ocfs2_do_insert_extent()
4269 right_path = ocfs2_new_path_from_et(et); in ocfs2_do_insert_extent()
4288 ret = ocfs2_find_path(et->et_ci, right_path, cpos); in ocfs2_do_insert_extent()
4307 ret = ocfs2_rotate_tree_right(handle, et, type->ins_split, in ocfs2_do_insert_extent()
4319 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_do_insert_extent()
4327 ret = ocfs2_append_rec_to_path(handle, et, insert_rec, in ocfs2_do_insert_extent()
4335 ret = ocfs2_insert_path(handle, et, left_path, right_path, in ocfs2_do_insert_extent()
4344 ocfs2_et_update_clusters(et, in ocfs2_do_insert_extent()
4347 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_do_insert_extent()
4356 static int ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, in ocfs2_figure_merge_contig_type() argument
4370 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_figure_merge_contig_type()
4387 status = ocfs2_find_path(et->et_ci, left_path, in ocfs2_figure_merge_contig_type()
4419 ret = ocfs2_et_extent_contig(et, rec, split_rec); in ocfs2_figure_merge_contig_type()
4442 status = ocfs2_find_path(et->et_ci, right_path, right_cpos); in ocfs2_figure_merge_contig_type()
4465 contig_type = ocfs2_et_extent_contig(et, rec, split_rec); in ocfs2_figure_merge_contig_type()
4484 static void ocfs2_figure_contig_type(struct ocfs2_extent_tree *et, in ocfs2_figure_contig_type() argument
4495 contig_type = ocfs2_et_extent_contig(et, &el->l_recs[i], in ocfs2_figure_contig_type()
4514 if (et->et_max_leaf_clusters && in ocfs2_figure_contig_type()
4515 (len > et->et_max_leaf_clusters)) in ocfs2_figure_contig_type()
4577 static int ocfs2_figure_insert_type(struct ocfs2_extent_tree *et, in ocfs2_figure_insert_type() argument
4591 el = et->et_root_el; in ocfs2_figure_insert_type()
4601 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_figure_insert_type()
4602 ocfs2_et_get_last_eb_blk(et), in ocfs2_figure_insert_type()
4624 ocfs2_figure_contig_type(et, insert, el, insert_rec); in ocfs2_figure_insert_type()
4629 path = ocfs2_new_path_from_et(et); in ocfs2_figure_insert_type()
4642 ret = ocfs2_find_path(et->et_ci, path, le32_to_cpu(insert_rec->e_cpos)); in ocfs2_figure_insert_type()
4658 ocfs2_figure_contig_type(et, insert, el, insert_rec); in ocfs2_figure_insert_type()
4679 if (ocfs2_et_get_last_eb_blk(et) == in ocfs2_figure_insert_type()
4708 struct ocfs2_extent_tree *et, in ocfs2_insert_extent() argument
4722 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_insert_extent()
4730 status = ocfs2_et_insert_check(et, &rec); in ocfs2_insert_extent()
4736 status = ocfs2_figure_insert_type(et, &last_eb_bh, &rec, in ocfs2_insert_extent()
4748 status = ocfs2_grow_tree(handle, et, in ocfs2_insert_extent()
4758 status = ocfs2_do_insert_extent(handle, et, &rec, &insert); in ocfs2_insert_extent()
4762 ocfs2_et_extent_map_insert(et, &rec); in ocfs2_insert_extent()
4773 * The extent b-tree's root is specified by et, and
4778 struct ocfs2_extent_tree *et, in ocfs2_add_clusters_in_btree() argument
4794 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_add_clusters_in_btree()
4801 free_extents = ocfs2_num_free_extents(et); in ocfs2_add_clusters_in_btree()
4820 < ocfs2_extend_meta_needed(et->et_root_el))) { in ocfs2_add_clusters_in_btree()
4838 status = ocfs2_et_root_journal_access(handle, et, in ocfs2_add_clusters_in_btree()
4848 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_add_clusters_in_btree()
4850 status = ocfs2_insert_extent(handle, et, *logical_offset, block, in ocfs2_add_clusters_in_btree()
4858 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_add_clusters_in_btree()
4910 struct ocfs2_extent_tree *et, in ocfs2_split_and_insert() argument
4933 rightmost_el = et->et_root_el; in ocfs2_split_and_insert()
4944 ret = ocfs2_grow_tree(handle, et, in ocfs2_split_and_insert()
4973 ocfs2_make_right_split_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_and_insert()
4982 ret = ocfs2_do_insert_extent(handle, et, &split_rec, &insert); in ocfs2_split_and_insert()
4998 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_split_and_insert()
5007 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_and_insert()
5009 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_split_and_insert()
5022 struct ocfs2_extent_tree *et, in ocfs2_replace_extent_rec() argument
5030 ret = ocfs2_path_bh_journal_access(handle, et->et_ci, path, in ocfs2_replace_extent_rec()
5064 struct ocfs2_extent_tree *et, in ocfs2_split_extent() argument
5085 ret = ocfs2_figure_merge_contig_type(et, path, el, in ocfs2_split_extent()
5100 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_split_extent()
5101 ocfs2_et_get_last_eb_blk(et), in ocfs2_split_extent()
5123 ret = ocfs2_replace_extent_rec(handle, et, path, el, in ocfs2_split_extent()
5126 ret = ocfs2_split_and_insert(handle, et, path, in ocfs2_split_extent()
5132 ret = ocfs2_try_to_merge_extent(handle, et, path, in ocfs2_split_extent()
5157 struct ocfs2_extent_tree *et, in ocfs2_change_extent_flag() argument
5164 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_change_extent_flag()
5171 left_path = ocfs2_new_path_from_et(et); in ocfs2_change_extent_flag()
5178 ret = ocfs2_find_path(et->et_ci, left_path, cpos); in ocfs2_change_extent_flag()
5189 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5200 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5208 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_change_extent_flag()
5223 ret = ocfs2_split_extent(handle, et, left_path, in ocfs2_change_extent_flag()
5245 struct ocfs2_extent_tree *et, in ocfs2_mark_extent_written() argument
5267 ocfs2_et_extent_map_truncate(et, 0); in ocfs2_mark_extent_written()
5269 ret = ocfs2_change_extent_flag(handle, et, cpos, in ocfs2_mark_extent_written()
5279 static int ocfs2_split_tree(handle_t *handle, struct ocfs2_extent_tree *et, in ocfs2_split_tree() argument
5297 ocfs2_make_right_split_rec(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_split_tree()
5302 ret = ocfs2_read_extent_block(et->et_ci, in ocfs2_split_tree()
5303 ocfs2_et_get_last_eb_blk(et), in ocfs2_split_tree()
5316 ocfs2_extend_meta_needed(et->et_root_el); in ocfs2_split_tree()
5325 ret = ocfs2_grow_tree(handle, et, &depth, &last_eb_bh, in ocfs2_split_tree()
5339 ret = ocfs2_do_insert_extent(handle, et, &split_rec, &insert); in ocfs2_split_tree()
5349 struct ocfs2_extent_tree *et, in ocfs2_truncate_rec() argument
5357 struct super_block *sb = ocfs2_metadata_cache_get_super(et->et_ci); in ocfs2_truncate_rec()
5373 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_truncate_rec()
5425 ret = ocfs2_find_path(et->et_ci, left_path, in ocfs2_truncate_rec()
5442 ret = ocfs2_journal_access_path(et->et_ci, handle, path); in ocfs2_truncate_rec()
5448 ret = ocfs2_journal_access_path(et->et_ci, handle, left_path); in ocfs2_truncate_rec()
5470 ocfs2_adjust_rightmost_records(handle, et, path, in ocfs2_truncate_rec()
5482 ocfs2_adjust_rightmost_records(handle, et, path, rec); in ocfs2_truncate_rec()
5487 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_truncate_rec()
5496 subtree_index = ocfs2_find_subtree_root(et, left_path, path); in ocfs2_truncate_rec()
5503 ret = ocfs2_rotate_tree_left(handle, et, path, dealloc); in ocfs2_truncate_rec()
5513 struct ocfs2_extent_tree *et, in ocfs2_remove_extent() argument
5528 ocfs2_et_extent_map_truncate(et, 0); in ocfs2_remove_extent()
5530 path = ocfs2_new_path_from_et(et); in ocfs2_remove_extent()
5537 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_remove_extent()
5546 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5548 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5577 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5582 ret = ocfs2_truncate_rec(handle, et, path, index, dealloc, in ocfs2_remove_extent()
5589 ret = ocfs2_split_tree(handle, et, path, index, in ocfs2_remove_extent()
5602 ret = ocfs2_find_path(et->et_ci, path, cpos); in ocfs2_remove_extent()
5611 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5613 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5627 ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci), in ocfs2_remove_extent()
5629 (unsigned long long)ocfs2_metadata_cache_owner(et->et_ci), in ocfs2_remove_extent()
5636 ret = ocfs2_truncate_rec(handle, et, path, index, dealloc, in ocfs2_remove_extent()
5657 struct ocfs2_extent_tree *et, in ocfs2_reserve_blocks_for_rec_trunc() argument
5668 num_free_extents = ocfs2_num_free_extents(et); in ocfs2_reserve_blocks_for_rec_trunc()
5677 extra_blocks += ocfs2_extend_meta_needed(et->et_root_el); in ocfs2_reserve_blocks_for_rec_trunc()
5699 struct ocfs2_extent_tree *et, in ocfs2_remove_btree_range() argument
5736 ret = ocfs2_reserve_blocks_for_rec_trunc(inode, et, 1, &meta_ac, in ocfs2_remove_btree_range()
5761 ret = ocfs2_et_root_journal_access(handle, et, in ocfs2_remove_btree_range()
5771 ret = ocfs2_remove_extent(handle, et, cpos, len, meta_ac, dealloc); in ocfs2_remove_btree_range()
5777 ocfs2_et_update_clusters(et, -len); in ocfs2_remove_btree_range()
5780 ocfs2_journal_dirty(handle, et->et_root_bh); in ocfs2_remove_btree_range()
6636 static int ocfs2_is_dealloc_empty(struct ocfs2_extent_tree *et) in ocfs2_is_dealloc_empty() argument
6640 if (!et->et_dealloc) in ocfs2_is_dealloc_empty()
6643 fl = et->et_dealloc->c_first_suballocator; in ocfs2_is_dealloc_empty()
6660 struct ocfs2_extent_tree *et, in ocfs2_reuse_blk_from_dealloc() argument
6670 OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); in ocfs2_reuse_blk_from_dealloc()
6678 dealloc = et->et_dealloc; in ocfs2_reuse_blk_from_dealloc()
6709 ocfs2_set_new_buffer_uptodate(et->et_ci, new_eb_bh[i]); in ocfs2_reuse_blk_from_dealloc()
6711 status = ocfs2_journal_access_eb(handle, et->et_ci, in ocfs2_reuse_blk_from_dealloc()
7073 struct ocfs2_extent_tree et; in ocfs2_convert_inline_data_to_extents() local
7166 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); in ocfs2_convert_inline_data_to_extents()
7167 ret = ocfs2_insert_extent(handle, &et, 0, block, 1, 0, NULL); in ocfs2_convert_inline_data_to_extents()
7225 struct ocfs2_extent_tree et; in ocfs2_commit_truncate() local
7229 ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); in ocfs2_commit_truncate()
7305 &et, path, &dealloc); in ocfs2_commit_truncate()
7354 status = ocfs2_remove_btree_range(inode, &et, trunc_cpos, in ocfs2_commit_truncate()