Lines Matching full:depth

182 		int depth = path->p_depth;  in ext4_ext_find_goal()  local
202 ex = path[depth].p_ext; in ext4_ext_find_goal()
215 if (path[depth].p_bh) in ext4_ext_find_goal()
216 return path[depth].p_bh->b_blocknr; in ext4_ext_find_goal()
311 ext4_ext_max_entries(struct inode *inode, int depth) in ext4_ext_max_entries() argument
315 if (depth == ext_depth(inode)) { in ext4_ext_max_entries()
316 if (depth == 0) in ext4_ext_max_entries()
321 if (depth == 0) in ext4_ext_max_entries()
356 ext4_fsblk_t *pblk, int depth) in ext4_valid_extent_entries() argument
364 if (depth == 0) { in ext4_valid_extent_entries()
399 int depth, ext4_fsblk_t pblk) in __ext4_ext_check() argument
408 if (unlikely(le16_to_cpu(eh->eh_depth) != depth)) { in __ext4_ext_check()
416 max = ext4_ext_max_entries(inode, depth); in __ext4_ext_check()
425 if (!ext4_valid_extent_entries(inode, eh, &pblk, depth)) { in __ext4_ext_check()
429 if (unlikely(depth > 32)) { in __ext4_ext_check()
434 if (ext_depth(inode) != depth && in __ext4_ext_check()
445 "entries %u, max %u(%u), depth %u(%u)", in __ext4_ext_check()
450 max, le16_to_cpu(eh->eh_depth), depth); in __ext4_ext_check()
454 #define ext4_ext_check(inode, eh, depth, pblk) \ argument
455 __ext4_ext_check(__func__, __LINE__, (inode), (eh), (depth), (pblk))
488 struct inode *inode, ext4_fsblk_t pblk, int depth, in __read_extent_tree_block() argument
511 ext_block_hdr(bh), depth, pblk); in __read_extent_tree_block()
518 if (!(flags & EXT4_EX_NOCACHE) && depth == 0) { in __read_extent_tree_block()
529 #define read_extent_tree_block(inode, pblk, depth, flags) \ argument
531 (depth), (flags))
542 int i = 0, depth, ret = 0; in ext4_ext_precache() local
548 depth = ext_depth(inode); in ext4_ext_precache()
551 if (!depth) { in ext4_ext_precache()
556 path = kcalloc(depth + 1, sizeof(struct ext4_ext_path), in ext4_ext_precache()
564 ret = ext4_ext_check(inode, path[0].p_hdr, depth, 0); in ext4_ext_precache()
573 if ((i == depth) || in ext4_ext_precache()
582 depth - i - 1, in ext4_ext_precache()
626 int depth = ext_depth(inode); in ext4_ext_show_leaf() local
634 eh = path[depth].p_hdr; in ext4_ext_show_leaf()
650 int depth = ext_depth(inode); in ext4_ext_show_move() local
653 if (depth != level) { in ext4_ext_show_move()
666 ex = path[depth].p_ext; in ext4_ext_show_move()
667 while (ex <= EXT_MAX_EXTENT(path[depth].p_hdr)) { in ext4_ext_show_move()
686 int depth, i; in ext4_ext_drop_refs() local
690 depth = path->p_depth; in ext4_ext_drop_refs()
691 for (i = 0; i <= depth; i++, path++) { in ext4_ext_drop_refs()
838 short int depth, i, ppos = 0; in ext4_find_extent() local
846 depth = ext_depth(inode); in ext4_find_extent()
847 if (depth < 0 || depth > EXT4_MAX_EXTENT_DEPTH) { in ext4_find_extent()
848 EXT4_ERROR_INODE(inode, "inode has invalid extent depth: %d", in ext4_find_extent()
849 depth); in ext4_find_extent()
856 if (depth > path[0].p_maxdepth) { in ext4_find_extent()
862 /* account possible depth increase */ in ext4_find_extent()
863 path = kcalloc(depth + 2, sizeof(struct ext4_ext_path), in ext4_find_extent()
867 path[0].p_maxdepth = depth + 1; in ext4_find_extent()
872 i = depth; in ext4_find_extent()
873 if (!(flags & EXT4_EX_NOCACHE) && depth == 0) in ext4_find_extent()
877 ext_debug(inode, "depth %d: num %d, max %d\n", in ext4_find_extent()
996 * at depth @at:
1009 int depth = ext_depth(inode); in ext4_ext_split() local
1028 if (unlikely(path[depth].p_ext > EXT_MAX_EXTENT(path[depth].p_hdr))) { in ext4_ext_split()
1032 if (path[depth].p_ext != EXT_MAX_EXTENT(path[depth].p_hdr)) { in ext4_ext_split()
1033 border = path[depth].p_ext[1].ee_block; in ext4_ext_split()
1056 ablocks = kcalloc(depth, sizeof(ext4_fsblk_t), gfp_flags); in ext4_ext_split()
1061 ext_debug(inode, "allocate %d blocks for indexes/leaf\n", depth - at); in ext4_ext_split()
1062 for (a = 0; a < depth - at; a++) { in ext4_ext_split()
1094 /* move remainder of path[depth] to the new leaf */ in ext4_ext_split()
1095 if (unlikely(path[depth].p_hdr->eh_entries != in ext4_ext_split()
1096 path[depth].p_hdr->eh_max)) { in ext4_ext_split()
1098 path[depth].p_hdr->eh_entries, in ext4_ext_split()
1099 path[depth].p_hdr->eh_max); in ext4_ext_split()
1104 m = EXT_MAX_EXTENT(path[depth].p_hdr) - path[depth].p_ext++; in ext4_ext_split()
1105 ext4_ext_show_move(inode, path, newblock, depth); in ext4_ext_split()
1109 memmove(ex, path[depth].p_ext, sizeof(struct ext4_extent) * m); in ext4_ext_split()
1129 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_ext_split()
1132 le16_add_cpu(&path[depth].p_hdr->eh_entries, -m); in ext4_ext_split()
1133 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_ext_split()
1140 k = depth - at - 1; in ext4_ext_split()
1149 /* current depth stored in i var */ in ext4_ext_split()
1150 i = depth - 1; in ext4_ext_split()
1169 neh->eh_depth = cpu_to_le16(depth - i); in ext4_ext_split()
1238 for (i = 0; i < depth; i++) { in ext4_ext_split()
1341 * if no free index is found, then it requests in-depth growing.
1351 int depth, i, err = 0; in ext4_ext_create_new_leaf() local
1354 i = depth = ext_depth(inode); in ext4_ext_create_new_leaf()
1357 curp = path + depth; in ext4_ext_create_new_leaf()
1379 /* tree is full, time to grow in depth */ in ext4_ext_create_new_leaf()
1394 * only first (depth 0 -> 1) produces free space; in ext4_ext_create_new_leaf()
1397 depth = ext_depth(inode); in ext4_ext_create_new_leaf()
1398 if (path[depth].p_hdr->eh_entries == path[depth].p_hdr->eh_max) { in ext4_ext_create_new_leaf()
1421 int depth, ee_len; in ext4_ext_search_left() local
1427 depth = path->p_depth; in ext4_ext_search_left()
1430 if (depth == 0 && path->p_ext == NULL) in ext4_ext_search_left()
1437 ex = path[depth].p_ext; in ext4_ext_search_left()
1440 if (unlikely(EXT_FIRST_EXTENT(path[depth].p_hdr) != ex)) { in ext4_ext_search_left()
1446 while (--depth >= 0) { in ext4_ext_search_left()
1447 ix = path[depth].p_idx; in ext4_ext_search_left()
1448 if (unlikely(ix != EXT_FIRST_INDEX(path[depth].p_hdr))) { in ext4_ext_search_left()
1450 "ix (%d) != EXT_FIRST_INDEX (%d) (depth %d)!", in ext4_ext_search_left()
1452 EXT_FIRST_INDEX(path[depth].p_hdr) != NULL ? in ext4_ext_search_left()
1453 le32_to_cpu(EXT_FIRST_INDEX(path[depth].p_hdr)->ei_block) : 0, in ext4_ext_search_left()
1454 depth); in ext4_ext_search_left()
1490 int depth; /* Note, NOT eh_depth; depth from top of tree */ in ext4_ext_search_right() local
1497 depth = path->p_depth; in ext4_ext_search_right()
1500 if (depth == 0 && path->p_ext == NULL) in ext4_ext_search_right()
1507 ex = path[depth].p_ext; in ext4_ext_search_right()
1510 if (unlikely(EXT_FIRST_EXTENT(path[depth].p_hdr) != ex)) { in ext4_ext_search_right()
1513 depth); in ext4_ext_search_right()
1516 while (--depth >= 0) { in ext4_ext_search_right()
1517 ix = path[depth].p_idx; in ext4_ext_search_right()
1518 if (unlikely(ix != EXT_FIRST_INDEX(path[depth].p_hdr))) { in ext4_ext_search_right()
1535 if (ex != EXT_LAST_EXTENT(path[depth].p_hdr)) { in ext4_ext_search_right()
1542 while (--depth >= 0) { in ext4_ext_search_right()
1543 ix = path[depth].p_idx; in ext4_ext_search_right()
1544 if (ix != EXT_LAST_INDEX(path[depth].p_hdr)) in ext4_ext_search_right()
1557 while (++depth < path->p_depth) { in ext4_ext_search_right()
1560 path->p_depth - depth, 0); in ext4_ext_search_right()
1569 bh = read_extent_tree_block(inode, block, path->p_depth - depth, 0); in ext4_ext_search_right()
1594 int depth; in ext4_ext_next_allocated_block() local
1597 depth = path->p_depth; in ext4_ext_next_allocated_block()
1599 if (depth == 0 && path->p_ext == NULL) in ext4_ext_next_allocated_block()
1602 while (depth >= 0) { in ext4_ext_next_allocated_block()
1603 struct ext4_ext_path *p = &path[depth]; in ext4_ext_next_allocated_block()
1605 if (depth == path->p_depth) { in ext4_ext_next_allocated_block()
1614 depth--; in ext4_ext_next_allocated_block()
1626 int depth; in ext4_ext_next_leaf_block() local
1629 depth = path->p_depth; in ext4_ext_next_leaf_block()
1632 if (depth == 0) in ext4_ext_next_leaf_block()
1636 depth--; in ext4_ext_next_leaf_block()
1638 while (depth >= 0) { in ext4_ext_next_leaf_block()
1639 if (path[depth].p_idx != in ext4_ext_next_leaf_block()
1640 EXT_LAST_INDEX(path[depth].p_hdr)) in ext4_ext_next_leaf_block()
1642 le32_to_cpu(path[depth].p_idx[1].ei_block); in ext4_ext_next_leaf_block()
1643 depth--; in ext4_ext_next_leaf_block()
1659 int depth = ext_depth(inode); in ext4_ext_correct_indexes() local
1664 eh = path[depth].p_hdr; in ext4_ext_correct_indexes()
1665 ex = path[depth].p_ext; in ext4_ext_correct_indexes()
1673 if (depth == 0) { in ext4_ext_correct_indexes()
1686 k = depth - 1; in ext4_ext_correct_indexes()
1687 border = path[depth].p_ext->ee_block; in ext4_ext_correct_indexes()
1756 unsigned int depth, len; in ext4_ext_try_to_merge_right() local
1759 depth = ext_depth(inode); in ext4_ext_try_to_merge_right()
1760 BUG_ON(path[depth].p_hdr == NULL); in ext4_ext_try_to_merge_right()
1761 eh = path[depth].p_hdr; in ext4_ext_try_to_merge_right()
1844 unsigned int depth; in ext4_ext_try_to_merge() local
1847 depth = ext_depth(inode); in ext4_ext_try_to_merge()
1848 BUG_ON(path[depth].p_hdr == NULL); in ext4_ext_try_to_merge()
1849 eh = path[depth].p_hdr; in ext4_ext_try_to_merge()
1874 unsigned int depth, len1; in ext4_ext_check_overlap() local
1879 depth = ext_depth(inode); in ext4_ext_check_overlap()
1880 if (!path[depth].p_ext) in ext4_ext_check_overlap()
1882 b2 = EXT4_LBLK_CMASK(sbi, le32_to_cpu(path[depth].p_ext->ee_block)); in ext4_ext_check_overlap()
1926 int depth, len, err; in ext4_ext_insert_extent() local
1936 depth = ext_depth(inode); in ext4_ext_insert_extent()
1937 ex = path[depth].p_ext; in ext4_ext_insert_extent()
1938 eh = path[depth].p_hdr; in ext4_ext_insert_extent()
1939 if (unlikely(path[depth].p_hdr == NULL)) { in ext4_ext_insert_extent()
1940 EXT4_ERROR_INODE(inode, "path[%d].p_hdr == NULL", depth); in ext4_ext_insert_extent()
1977 path + depth); in ext4_ext_insert_extent()
1985 eh = path[depth].p_hdr; in ext4_ext_insert_extent()
2003 path + depth); in ext4_ext_insert_extent()
2014 eh = path[depth].p_hdr; in ext4_ext_insert_extent()
2020 depth = ext_depth(inode); in ext4_ext_insert_extent()
2021 eh = path[depth].p_hdr; in ext4_ext_insert_extent()
2037 eh = npath[depth].p_hdr; in ext4_ext_insert_extent()
2058 depth = ext_depth(inode); in ext4_ext_insert_extent()
2059 eh = path[depth].p_hdr; in ext4_ext_insert_extent()
2062 nearex = path[depth].p_ext; in ext4_ext_insert_extent()
2064 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_ext_insert_extent()
2114 path[depth].p_ext = nearex; in ext4_ext_insert_extent()
2201 int depth = ext_depth(inode); in ext4_ext_determine_hole() local
2205 ex = path[depth].p_ext; in ext4_ext_determine_hole()
2255 struct ext4_ext_path *path, int depth) in ext4_ext_rm_idx() argument
2261 depth--; in ext4_ext_rm_idx()
2262 path = path + depth; in ext4_ext_rm_idx()
2288 while (--depth >= 0) { in ext4_ext_rm_idx()
2314 int depth = ext_depth(inode); in ext4_ext_calc_credits_for_single_extent() local
2318 if (le16_to_cpu(path[depth].p_hdr->eh_entries) in ext4_ext_calc_credits_for_single_extent()
2319 < le16_to_cpu(path[depth].p_hdr->eh_max)) { in ext4_ext_calc_credits_for_single_extent()
2350 int depth; in ext4_ext_index_trans_blocks() local
2356 depth = ext_depth(inode); in ext4_ext_index_trans_blocks()
2359 index = depth * 2; in ext4_ext_index_trans_blocks()
2361 index = depth * 3; in ext4_ext_index_trans_blocks()
2550 int depth = ext_depth(inode), credits, revoke_credits; in ext4_ext_rm_leaf() local
2562 if (!path[depth].p_hdr) in ext4_ext_rm_leaf()
2563 path[depth].p_hdr = ext_block_hdr(path[depth].p_bh); in ext4_ext_rm_leaf()
2564 eh = path[depth].p_hdr; in ext4_ext_rm_leaf()
2565 if (unlikely(path[depth].p_hdr == NULL)) { in ext4_ext_rm_leaf()
2566 EXT4_ERROR_INODE(inode, "path[%d].p_hdr == NULL", depth); in ext4_ext_rm_leaf()
2570 ex = path[depth].p_ext; in ext4_ext_rm_leaf()
2589 path[depth].p_ext = ex; in ext4_ext_rm_leaf()
2660 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_ext_rm_leaf()
2700 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_ext_rm_leaf()
2739 if (err == 0 && eh->eh_entries == 0 && path[depth].p_bh != NULL) in ext4_ext_rm_leaf()
2740 err = ext4_ext_rm_idx(handle, inode, path, depth); in ext4_ext_rm_leaf()
2771 int depth = ext_depth(inode); in ext4_ext_remove_space() local
2785 depth + 1, in ext4_ext_remove_space()
2786 ext4_free_metadata_revoke_credits(inode->i_sb, depth)); in ext4_ext_remove_space()
2791 trace_ext4_ext_remove_space(inode, start, end, depth); in ext4_ext_remove_space()
2812 depth = ext_depth(inode); in ext4_ext_remove_space()
2814 ex = path[depth].p_ext; in ext4_ext_remove_space()
2816 if (depth) { in ext4_ext_remove_space()
2819 depth); in ext4_ext_remove_space()
2883 * after i_size and walking into the tree depth-wise. in ext4_ext_remove_space()
2885 depth = ext_depth(inode); in ext4_ext_remove_space()
2887 int k = i = depth; in ext4_ext_remove_space()
2892 path = kcalloc(depth + 1, sizeof(struct ext4_ext_path), in ext4_ext_remove_space()
2898 path[0].p_maxdepth = path[0].p_depth = depth; in ext4_ext_remove_space()
2902 if (ext4_ext_check(inode, path[0].p_hdr, depth, 0)) { in ext4_ext_remove_space()
2910 if (i == depth) { in ext4_ext_remove_space()
2949 ext4_idx_pblock(path[i].p_idx), depth - i - 1, in ext4_ext_remove_space()
2959 if (WARN_ON(i + 1 > depth)) { in ext4_ext_remove_space()
2985 trace_ext4_ext_remove_space_done(inode, start, end, depth, &partial, in ext4_ext_remove_space()
3075 printk(KERN_ERR "EXT4-fs: extents: %lu min, %lu max, max depth %lu\n", in ext4_ext_release()
3143 unsigned int ee_len, depth; in ext4_split_extent_at() local
3153 depth = ext_depth(inode); in ext4_split_extent_at()
3154 ex = path[depth].p_ext; in ext4_split_extent_at()
3165 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_split_extent_at()
3197 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_split_extent_at()
3286 unsigned int ee_len, depth; in ext4_split_extent() local
3292 depth = ext_depth(inode); in ext4_split_extent()
3293 ex = path[depth].p_ext; in ext4_split_extent()
3320 depth = ext_depth(inode); in ext4_split_extent()
3321 ex = path[depth].p_ext; in ext4_split_extent()
3381 unsigned int ee_len, depth, map_len = map->m_len; in ext4_ext_convert_to_initialized() local
3395 depth = ext_depth(inode); in ext4_ext_convert_to_initialized()
3396 eh = path[depth].p_hdr; in ext4_ext_convert_to_initialized()
3397 ex = path[depth].p_ext; in ext4_ext_convert_to_initialized()
3451 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_ext_convert_to_initialized()
3497 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_ext_convert_to_initialized()
3519 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_ext_convert_to_initialized()
3522 path[depth].p_ext = abut_ex; in ext4_ext_convert_to_initialized()
3637 int split_flag = 0, depth; in ext4_split_convert_extents() local
3650 depth = ext_depth(inode); in ext4_split_convert_extents()
3651 ex = path[depth].p_ext; in ext4_split_convert_extents()
3677 int depth; in ext4_convert_unwritten_extents_endio() local
3680 depth = ext_depth(inode); in ext4_convert_unwritten_extents_endio()
3681 ex = path[depth].p_ext; in ext4_convert_unwritten_extents_endio()
3708 depth = ext_depth(inode); in ext4_convert_unwritten_extents_endio()
3709 ex = path[depth].p_ext; in ext4_convert_unwritten_extents_endio()
3712 err = ext4_ext_get_access(handle, inode, path + depth); in ext4_convert_unwritten_extents_endio()
3740 int depth; in convert_initialized_extent() local
3750 depth = ext_depth(inode); in convert_initialized_extent()
3751 ex = path[depth].p_ext; in convert_initialized_extent()
3766 depth = ext_depth(inode); in convert_initialized_extent()
3767 ex = path[depth].p_ext; in convert_initialized_extent()
3775 err = ext4_ext_get_access(handle, inode, path + depth); in convert_initialized_extent()
4044 int err = 0, depth, ret; in ext4_ext_map_blocks() local
4061 depth = ext_depth(inode); in ext4_ext_map_blocks()
4068 if (unlikely(path[depth].p_ext == NULL && depth != 0)) { in ext4_ext_map_blocks()
4070 "lblock: %lu, depth: %d pblock %lld", in ext4_ext_map_blocks()
4071 (unsigned long) map->m_lblk, depth, in ext4_ext_map_blocks()
4072 path[depth].p_block); in ext4_ext_map_blocks()
4077 ex = path[depth].p_ext; in ext4_ext_map_blocks()
4388 int depth = 0; in ext4_alloc_file_blocks() local
4408 depth = ext_depth(inode); in ext4_alloc_file_blocks()
4413 * Recalculate credits when extent tree depth changes. in ext4_alloc_file_blocks()
4415 if (depth != ext_depth(inode)) { in ext4_alloc_file_blocks()
4417 depth = ext_depth(inode); in ext4_alloc_file_blocks()
4999 * Shift the extents of a path structure lying between path[depth].p_ext
5000 * and EXT_LAST_EXTENT(path[depth].p_hdr), by @shift blocks. @SHIFT tells
5008 int depth, err = 0; in ext4_ext_shift_path_extents() local
5011 depth = path->p_depth; in ext4_ext_shift_path_extents()
5013 while (depth >= 0) { in ext4_ext_shift_path_extents()
5014 if (depth == path->p_depth) { in ext4_ext_shift_path_extents()
5015 ex_start = path[depth].p_ext; in ext4_ext_shift_path_extents()
5019 ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); in ext4_ext_shift_path_extents()
5021 err = ext4_access_path(handle, inode, path + depth); in ext4_ext_shift_path_extents()
5025 if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) in ext4_ext_shift_path_extents()
5034 EXT_FIRST_EXTENT(path[depth].p_hdr)) in ext4_ext_shift_path_extents()
5048 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_ext_shift_path_extents()
5052 if (--depth < 0 || !update) in ext4_ext_shift_path_extents()
5057 err = ext4_access_path(handle, inode, path + depth); in ext4_ext_shift_path_extents()
5062 le32_add_cpu(&path[depth].p_idx->ei_block, -shift); in ext4_ext_shift_path_extents()
5064 le32_add_cpu(&path[depth].p_idx->ei_block, shift); in ext4_ext_shift_path_extents()
5065 err = ext4_ext_dirty(handle, inode, path + depth); in ext4_ext_shift_path_extents()
5070 if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) in ext4_ext_shift_path_extents()
5073 depth--; in ext4_ext_shift_path_extents()
5093 int ret = 0, depth; in ext4_ext_shift_extents() local
5103 depth = path->p_depth; in ext4_ext_shift_extents()
5104 extent = path[depth].p_ext; in ext4_ext_shift_extents()
5120 depth = path->p_depth; in ext4_ext_shift_extents()
5121 extent = path[depth].p_ext; in ext4_ext_shift_extents()
5164 depth = path->p_depth; in ext4_ext_shift_extents()
5165 extent = path[depth].p_ext; in ext4_ext_shift_extents()
5174 if (extent < EXT_LAST_EXTENT(path[depth].p_hdr)) { in ext4_ext_shift_extents()
5175 path[depth].p_ext++; in ext4_ext_shift_extents()
5183 extent = EXT_LAST_EXTENT(path[depth].p_hdr); in ext4_ext_shift_extents()
5187 extent = EXT_FIRST_EXTENT(path[depth].p_hdr); in ext4_ext_shift_extents()
5196 path[depth].p_ext = extent; in ext4_ext_shift_extents()
5368 int ret = 0, depth, split_flag = 0; in ext4_insert_range() local
5464 depth = ext_depth(inode); in ext4_insert_range()
5465 extent = path[depth].p_ext; in ext4_insert_range()
5740 int depth, mapped = 0, err = 0; in ext4_clu_mapped() local
5752 depth = ext_depth(inode); in ext4_clu_mapped()
5759 if (unlikely(path[depth].p_ext == NULL && depth != 0)) { in ext4_clu_mapped()
5761 "bad extent address - lblock: %lu, depth: %d, pblock: %lld", in ext4_clu_mapped()
5763 depth, path[depth].p_block); in ext4_clu_mapped()
5768 extent = path[depth].p_ext; in ext4_clu_mapped()