Lines Matching full:level
26 int level = NILFS_BTREE_LEVEL_DATA; in nilfs_btree_alloc_path() local
32 for (; level < NILFS_BTREE_LEVEL_MAX; level++) { in nilfs_btree_alloc_path()
33 path[level].bp_bh = NULL; in nilfs_btree_alloc_path()
34 path[level].bp_sib_bh = NULL; in nilfs_btree_alloc_path()
35 path[level].bp_index = 0; in nilfs_btree_alloc_path()
36 path[level].bp_oldreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; in nilfs_btree_alloc_path()
37 path[level].bp_newreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; in nilfs_btree_alloc_path()
38 path[level].bp_op = NULL; in nilfs_btree_alloc_path()
47 int level = NILFS_BTREE_LEVEL_DATA; in nilfs_btree_free_path() local
49 for (; level < NILFS_BTREE_LEVEL_MAX; level++) in nilfs_btree_free_path()
50 brelse(path[level].bp_bh); in nilfs_btree_free_path()
96 nilfs_btree_node_set_level(struct nilfs_btree_node *node, int level) in nilfs_btree_node_set_level() argument
98 node->bn_level = level; in nilfs_btree_node_set_level()
163 int level, int nchildren, int ncmax, in nilfs_btree_node_init() argument
171 nilfs_btree_node_set_level(node, level); in nilfs_btree_node_init()
343 int level, flags, nchildren; in nilfs_btree_node_broken() local
346 level = nilfs_btree_node_get_level(node); in nilfs_btree_node_broken()
350 if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN || in nilfs_btree_node_broken()
351 level >= NILFS_BTREE_LEVEL_MAX || in nilfs_btree_node_broken()
356 "bad btree node (ino=%lu, blocknr=%llu): level = %d, flags = 0x%x, nchildren = %d", in nilfs_btree_node_broken()
357 inode->i_ino, (unsigned long long)blocknr, level, in nilfs_btree_node_broken()
374 int level, flags, nchildren; in nilfs_btree_root_broken() local
377 level = nilfs_btree_node_get_level(node); in nilfs_btree_root_broken()
381 if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN || in nilfs_btree_root_broken()
382 level >= NILFS_BTREE_LEVEL_MAX || in nilfs_btree_root_broken()
386 "bad btree root (ino=%lu): level = %d, flags = 0x%x, nchildren = %d", in nilfs_btree_root_broken()
387 inode->i_ino, level, flags, nchildren); in nilfs_btree_root_broken()
416 nilfs_btree_get_nonroot_node(const struct nilfs_btree_path *path, int level) in nilfs_btree_get_nonroot_node() argument
418 return (struct nilfs_btree_node *)path[level].bp_bh->b_data; in nilfs_btree_get_nonroot_node()
422 nilfs_btree_get_sib_node(const struct nilfs_btree_path *path, int level) in nilfs_btree_get_sib_node() argument
424 return (struct nilfs_btree_node *)path[level].bp_sib_bh->b_data; in nilfs_btree_get_sib_node()
435 int level, int *ncmaxp) in nilfs_btree_get_node() argument
439 if (level == nilfs_btree_height(btree) - 1) { in nilfs_btree_get_node()
443 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_get_node()
450 struct nilfs_btree_node *node, int level) in nilfs_btree_bad_node() argument
452 if (unlikely(nilfs_btree_node_get_level(node) != level)) { in nilfs_btree_bad_node()
455 "btree level mismatch (ino=%lu): %d != %d", in nilfs_btree_bad_node()
457 nilfs_btree_node_get_level(node), level); in nilfs_btree_bad_node()
545 int level, index, found, ncmax, ret; in nilfs_btree_do_lookup() local
548 level = nilfs_btree_node_get_level(node); in nilfs_btree_do_lookup()
549 if (level < minlevel || nilfs_btree_node_get_nchildren(node) <= 0) in nilfs_btree_do_lookup()
555 path[level].bp_bh = NULL; in nilfs_btree_do_lookup()
556 path[level].bp_index = index; in nilfs_btree_do_lookup()
560 while (--level >= minlevel) { in nilfs_btree_do_lookup()
562 if (level == NILFS_BTREE_LEVEL_NODE_MIN && readahead) { in nilfs_btree_do_lookup()
563 p.node = nilfs_btree_get_node(btree, path, level + 1, in nilfs_btree_do_lookup()
569 ret = __nilfs_btree_get_block(btree, ptr, &path[level].bp_bh, in nilfs_btree_do_lookup()
574 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_lookup()
575 if (nilfs_btree_bad_node(btree, node, level)) in nilfs_btree_do_lookup()
584 WARN_ON(found || level != NILFS_BTREE_LEVEL_NODE_MIN); in nilfs_btree_do_lookup()
588 path[level].bp_index = index; in nilfs_btree_do_lookup()
605 int index, level, ncmax, ret; in nilfs_btree_do_lookup_last() local
611 level = nilfs_btree_node_get_level(node); in nilfs_btree_do_lookup_last()
614 path[level].bp_bh = NULL; in nilfs_btree_do_lookup_last()
615 path[level].bp_index = index; in nilfs_btree_do_lookup_last()
618 for (level--; level > 0; level--) { in nilfs_btree_do_lookup_last()
619 ret = nilfs_btree_get_block(btree, ptr, &path[level].bp_bh); in nilfs_btree_do_lookup_last()
622 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_lookup_last()
623 if (nilfs_btree_bad_node(btree, node, level)) in nilfs_btree_do_lookup_last()
627 path[level].bp_index = index; in nilfs_btree_do_lookup_last()
642 * @minlevel: start level
654 int index, next_adj, level; in nilfs_btree_get_next_key() local
658 for (level = minlevel; level <= maxlevel; level++) { in nilfs_btree_get_next_key()
659 if (level == maxlevel) in nilfs_btree_get_next_key()
662 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_get_next_key()
664 index = path[level].bp_index + next_adj; in nilfs_btree_get_next_key()
677 __u64 key, int level, __u64 *ptrp) in nilfs_btree_lookup() argument
686 ret = nilfs_btree_do_lookup(btree, path, key, ptrp, level, 0); in nilfs_btree_lookup()
702 int level = NILFS_BTREE_LEVEL_NODE_MIN; in nilfs_btree_lookup_contig() local
710 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level, 1); in nilfs_btree_lookup_contig()
726 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_lookup_contig()
727 index = path[level].bp_index + 1; in nilfs_btree_lookup_contig()
745 if (level == maxlevel) in nilfs_btree_lookup_contig()
749 p.node = nilfs_btree_get_node(btree, path, level + 1, &p.ncmax); in nilfs_btree_lookup_contig()
750 p.index = path[level + 1].bp_index + 1; in nilfs_btree_lookup_contig()
756 path[level + 1].bp_index = p.index; in nilfs_btree_lookup_contig()
758 brelse(path[level].bp_bh); in nilfs_btree_lookup_contig()
759 path[level].bp_bh = NULL; in nilfs_btree_lookup_contig()
761 ret = __nilfs_btree_get_block(btree, ptr2, &path[level].bp_bh, in nilfs_btree_lookup_contig()
765 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_lookup_contig()
768 path[level].bp_index = index; in nilfs_btree_lookup_contig()
780 int level, __u64 key) in nilfs_btree_promote_key() argument
782 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_promote_key()
785 nilfs_btree_get_nonroot_node(path, level), in nilfs_btree_promote_key()
786 path[level].bp_index, key); in nilfs_btree_promote_key()
787 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_promote_key()
788 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_promote_key()
789 } while ((path[level].bp_index == 0) && in nilfs_btree_promote_key()
790 (++level < nilfs_btree_height(btree) - 1)); in nilfs_btree_promote_key()
794 if (level == nilfs_btree_height(btree) - 1) { in nilfs_btree_promote_key()
796 path[level].bp_index, key); in nilfs_btree_promote_key()
802 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_do_insert() argument
807 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_do_insert()
808 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_insert()
810 nilfs_btree_node_insert(node, path[level].bp_index, in nilfs_btree_do_insert()
812 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_do_insert()
813 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_do_insert()
815 if (path[level].bp_index == 0) in nilfs_btree_do_insert()
816 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_insert()
821 nilfs_btree_node_insert(node, path[level].bp_index, in nilfs_btree_do_insert()
829 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_carry_left() argument
834 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_carry_left()
835 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_carry_left()
842 if (n > path[level].bp_index) { in nilfs_btree_carry_left()
850 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_carry_left()
851 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_carry_left()
852 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_carry_left()
853 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_carry_left()
855 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_left()
859 brelse(path[level].bp_bh); in nilfs_btree_carry_left()
860 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_carry_left()
861 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_left()
862 path[level].bp_index += lnchildren; in nilfs_btree_carry_left()
863 path[level + 1].bp_index--; in nilfs_btree_carry_left()
865 brelse(path[level].bp_sib_bh); in nilfs_btree_carry_left()
866 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_left()
867 path[level].bp_index -= n; in nilfs_btree_carry_left()
870 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_left()
875 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_carry_right() argument
880 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_carry_right()
881 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_carry_right()
888 if (n > nchildren - path[level].bp_index) { in nilfs_btree_carry_right()
896 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_carry_right()
897 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_carry_right()
898 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_carry_right()
899 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_carry_right()
901 path[level + 1].bp_index++; in nilfs_btree_carry_right()
902 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_right()
904 path[level + 1].bp_index--; in nilfs_btree_carry_right()
907 brelse(path[level].bp_bh); in nilfs_btree_carry_right()
908 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_carry_right()
909 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_right()
910 path[level].bp_index -= nilfs_btree_node_get_nchildren(node); in nilfs_btree_carry_right()
911 path[level + 1].bp_index++; in nilfs_btree_carry_right()
913 brelse(path[level].bp_sib_bh); in nilfs_btree_carry_right()
914 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_right()
917 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_right()
922 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_split() argument
927 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_split()
928 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_split()
934 if (n > nchildren - path[level].bp_index) { in nilfs_btree_split()
941 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_split()
942 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_split()
943 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_split()
944 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_split()
947 path[level].bp_index -= nilfs_btree_node_get_nchildren(node); in nilfs_btree_split()
948 nilfs_btree_node_insert(right, path[level].bp_index, in nilfs_btree_split()
952 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_split()
954 brelse(path[level].bp_bh); in nilfs_btree_split()
955 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_split()
956 path[level].bp_sib_bh = NULL; in nilfs_btree_split()
958 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_split()
961 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_split()
963 brelse(path[level].bp_sib_bh); in nilfs_btree_split()
964 path[level].bp_sib_bh = NULL; in nilfs_btree_split()
967 path[level + 1].bp_index++; in nilfs_btree_split()
972 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_grow() argument
978 child = nilfs_btree_get_sib_node(path, level); in nilfs_btree_grow()
985 nilfs_btree_node_set_level(root, level + 1); in nilfs_btree_grow()
987 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_grow()
988 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_grow()
990 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_grow()
991 path[level].bp_sib_bh = NULL; in nilfs_btree_grow()
993 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_grow()
996 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_grow()
1003 int level, ncmax; in nilfs_btree_find_near() local
1009 level = NILFS_BTREE_LEVEL_NODE_MIN; in nilfs_btree_find_near()
1010 if (path[level].bp_index > 0) { in nilfs_btree_find_near()
1011 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1013 path[level].bp_index - 1, in nilfs_btree_find_near()
1018 level = NILFS_BTREE_LEVEL_NODE_MIN + 1; in nilfs_btree_find_near()
1019 if (level <= nilfs_btree_height(btree) - 1) { in nilfs_btree_find_near()
1020 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1021 return nilfs_btree_node_get_ptr(node, path[level].bp_index, in nilfs_btree_find_near()
1056 int pindex, level, ncmax, ncblk, ret; in nilfs_btree_prepare_insert() local
1060 level = NILFS_BTREE_LEVEL_DATA; in nilfs_btree_prepare_insert()
1064 path[level].bp_newreq.bpr_ptr = in nilfs_btree_prepare_insert()
1069 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1075 for (level = NILFS_BTREE_LEVEL_NODE_MIN; in nilfs_btree_prepare_insert()
1076 level < nilfs_btree_height(btree) - 1; in nilfs_btree_prepare_insert()
1077 level++) { in nilfs_btree_prepare_insert()
1078 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_prepare_insert()
1080 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1085 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_insert()
1086 pindex = path[level + 1].bp_index; in nilfs_btree_prepare_insert()
1097 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1098 path[level].bp_op = nilfs_btree_carry_left; in nilfs_btree_prepare_insert()
1115 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1116 path[level].bp_op = nilfs_btree_carry_right; in nilfs_btree_prepare_insert()
1125 path[level].bp_newreq.bpr_ptr = in nilfs_btree_prepare_insert()
1126 path[level - 1].bp_newreq.bpr_ptr + 1; in nilfs_btree_prepare_insert()
1128 &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1132 path[level].bp_newreq.bpr_ptr, in nilfs_btree_prepare_insert()
1140 nilfs_btree_node_init(sib, 0, level, 0, ncblk, NULL, NULL); in nilfs_btree_prepare_insert()
1141 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1142 path[level].bp_op = nilfs_btree_split; in nilfs_btree_prepare_insert()
1149 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1155 path[level].bp_newreq.bpr_ptr = path[level - 1].bp_newreq.bpr_ptr + 1; in nilfs_btree_prepare_insert()
1156 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1159 ret = nilfs_btree_get_new_block(btree, path[level].bp_newreq.bpr_ptr, in nilfs_btree_prepare_insert()
1165 0, level, 0, ncblk, NULL, NULL); in nilfs_btree_prepare_insert()
1166 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1167 path[level].bp_op = nilfs_btree_grow; in nilfs_btree_prepare_insert()
1169 level++; in nilfs_btree_prepare_insert()
1170 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1177 *levelp = level; in nilfs_btree_prepare_insert()
1182 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1184 for (level--; level > NILFS_BTREE_LEVEL_DATA; level--) { in nilfs_btree_prepare_insert()
1185 nilfs_btnode_delete(path[level].bp_sib_bh); in nilfs_btree_prepare_insert()
1186 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1190 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1192 *levelp = level; in nilfs_btree_prepare_insert()
1202 int level; in nilfs_btree_commit_insert() local
1211 for (level = NILFS_BTREE_LEVEL_NODE_MIN; level <= maxlevel; level++) { in nilfs_btree_commit_insert()
1213 &path[level - 1].bp_newreq, dat); in nilfs_btree_commit_insert()
1214 path[level].bp_op(btree, path, level, &key, &ptr); in nilfs_btree_commit_insert()
1225 int level, ret; in nilfs_btree_insert() local
1239 ret = nilfs_btree_prepare_insert(btree, path, &level, key, ptr, &stats); in nilfs_btree_insert()
1242 nilfs_btree_commit_insert(btree, path, level, key, ptr); in nilfs_btree_insert()
1252 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_do_delete() argument
1257 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_do_delete()
1258 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_delete()
1260 nilfs_btree_node_delete(node, path[level].bp_index, in nilfs_btree_do_delete()
1262 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_do_delete()
1263 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_do_delete()
1264 if (path[level].bp_index == 0) in nilfs_btree_do_delete()
1265 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_delete()
1269 nilfs_btree_node_delete(node, path[level].bp_index, in nilfs_btree_do_delete()
1277 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_borrow_left() argument
1282 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_left()
1284 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_borrow_left()
1285 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_borrow_left()
1294 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_borrow_left()
1295 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_borrow_left()
1296 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_borrow_left()
1297 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_borrow_left()
1299 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_left()
1302 brelse(path[level].bp_sib_bh); in nilfs_btree_borrow_left()
1303 path[level].bp_sib_bh = NULL; in nilfs_btree_borrow_left()
1304 path[level].bp_index += n; in nilfs_btree_borrow_left()
1309 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_borrow_right() argument
1314 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_right()
1316 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_borrow_right()
1317 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_borrow_right()
1326 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_borrow_right()
1327 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_borrow_right()
1328 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_borrow_right()
1329 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_borrow_right()
1331 path[level + 1].bp_index++; in nilfs_btree_borrow_right()
1332 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_right()
1334 path[level + 1].bp_index--; in nilfs_btree_borrow_right()
1336 brelse(path[level].bp_sib_bh); in nilfs_btree_borrow_right()
1337 path[level].bp_sib_bh = NULL; in nilfs_btree_borrow_right()
1342 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_concat_left() argument
1347 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_left()
1349 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_concat_left()
1350 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_concat_left()
1357 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_concat_left()
1358 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_concat_left()
1360 nilfs_btnode_delete(path[level].bp_bh); in nilfs_btree_concat_left()
1361 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_concat_left()
1362 path[level].bp_sib_bh = NULL; in nilfs_btree_concat_left()
1363 path[level].bp_index += nilfs_btree_node_get_nchildren(left); in nilfs_btree_concat_left()
1368 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_concat_right() argument
1373 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_right()
1375 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_concat_right()
1376 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_concat_right()
1383 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_concat_right()
1384 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_concat_right()
1386 nilfs_btnode_delete(path[level].bp_sib_bh); in nilfs_btree_concat_right()
1387 path[level].bp_sib_bh = NULL; in nilfs_btree_concat_right()
1388 path[level + 1].bp_index++; in nilfs_btree_concat_right()
1393 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_shrink() argument
1398 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_shrink()
1401 child = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_shrink()
1406 nilfs_btree_node_set_level(root, level); in nilfs_btree_shrink()
1411 nilfs_btnode_delete(path[level].bp_bh); in nilfs_btree_shrink()
1412 path[level].bp_bh = NULL; in nilfs_btree_shrink()
1417 int level, __u64 *keyp, __u64 *ptrp) in nilfs_btree_nop() argument
1430 int pindex, dindex, level, ncmin, ncmax, ncblk, ret; in nilfs_btree_prepare_delete() local
1437 for (level = NILFS_BTREE_LEVEL_NODE_MIN, dindex = path[level].bp_index; in nilfs_btree_prepare_delete()
1438 level < nilfs_btree_height(btree) - 1; in nilfs_btree_prepare_delete()
1439 level++) { in nilfs_btree_prepare_delete()
1440 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_prepare_delete()
1441 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_delete()
1444 &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1449 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1454 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_delete()
1455 pindex = path[level + 1].bp_index; in nilfs_btree_prepare_delete()
1467 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1468 path[level].bp_op = nilfs_btree_borrow_left; in nilfs_btree_prepare_delete()
1472 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1473 path[level].bp_op = nilfs_btree_concat_left; in nilfs_btree_prepare_delete()
1487 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1488 path[level].bp_op = nilfs_btree_borrow_right; in nilfs_btree_prepare_delete()
1492 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1493 path[level].bp_op = nilfs_btree_concat_right; in nilfs_btree_prepare_delete()
1508 WARN_ON(level != nilfs_btree_height(btree) - 2); in nilfs_btree_prepare_delete()
1511 path[level].bp_op = nilfs_btree_shrink; in nilfs_btree_prepare_delete()
1513 level++; in nilfs_btree_prepare_delete()
1514 path[level].bp_op = nilfs_btree_nop; in nilfs_btree_prepare_delete()
1517 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1525 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1530 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_delete()
1534 ret = nilfs_bmap_prepare_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1540 *levelp = level; in nilfs_btree_prepare_delete()
1545 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1547 for (level--; level >= NILFS_BTREE_LEVEL_NODE_MIN; level--) { in nilfs_btree_prepare_delete()
1548 brelse(path[level].bp_sib_bh); in nilfs_btree_prepare_delete()
1549 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1551 *levelp = level; in nilfs_btree_prepare_delete()
1560 int level; in nilfs_btree_commit_delete() local
1562 for (level = NILFS_BTREE_LEVEL_NODE_MIN; level <= maxlevel; level++) { in nilfs_btree_commit_delete()
1563 nilfs_bmap_commit_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_commit_delete()
1564 path[level].bp_op(btree, path, level, NULL, NULL); in nilfs_btree_commit_delete()
1577 int level, ret; in nilfs_btree_delete() local
1591 ret = nilfs_btree_prepare_delete(btree, path, &level, &stats, dat); in nilfs_btree_delete()
1594 nilfs_btree_commit_delete(btree, path, level, dat); in nilfs_btree_delete()
1812 /* create child node at level 1 */ in nilfs_btree_commit_convert_and_insert()
1824 /* create root node at level 2 */ in nilfs_btree_commit_convert_and_insert()
1833 /* create root node at level 1 */ in nilfs_btree_commit_convert_and_insert()
1891 int level, in nilfs_btree_propagate_p() argument
1894 while ((++level < nilfs_btree_height(btree) - 1) && in nilfs_btree_propagate_p()
1895 !buffer_dirty(path[level].bp_bh)) in nilfs_btree_propagate_p()
1896 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_propagate_p()
1903 int level, struct inode *dat) in nilfs_btree_prepare_update_v() argument
1908 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_update_v()
1909 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_update_v()
1910 nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_prepare_update_v()
1912 path[level].bp_newreq.bpr_ptr = path[level].bp_oldreq.bpr_ptr + 1; in nilfs_btree_prepare_update_v()
1913 ret = nilfs_dat_prepare_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_prepare_update_v()
1914 &path[level].bp_newreq.bpr_req); in nilfs_btree_prepare_update_v()
1918 if (buffer_nilfs_node(path[level].bp_bh)) { in nilfs_btree_prepare_update_v()
1919 path[level].bp_ctxt.oldkey = path[level].bp_oldreq.bpr_ptr; in nilfs_btree_prepare_update_v()
1920 path[level].bp_ctxt.newkey = path[level].bp_newreq.bpr_ptr; in nilfs_btree_prepare_update_v()
1921 path[level].bp_ctxt.bh = path[level].bp_bh; in nilfs_btree_prepare_update_v()
1924 &path[level].bp_ctxt); in nilfs_btree_prepare_update_v()
1927 &path[level].bp_oldreq.bpr_req, in nilfs_btree_prepare_update_v()
1928 &path[level].bp_newreq.bpr_req); in nilfs_btree_prepare_update_v()
1938 int level, struct inode *dat) in nilfs_btree_commit_update_v() argument
1943 nilfs_dat_commit_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_commit_update_v()
1944 &path[level].bp_newreq.bpr_req, in nilfs_btree_commit_update_v()
1947 if (buffer_nilfs_node(path[level].bp_bh)) { in nilfs_btree_commit_update_v()
1950 &path[level].bp_ctxt); in nilfs_btree_commit_update_v()
1951 path[level].bp_bh = path[level].bp_ctxt.bh; in nilfs_btree_commit_update_v()
1953 set_buffer_nilfs_volatile(path[level].bp_bh); in nilfs_btree_commit_update_v()
1955 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_commit_update_v()
1956 nilfs_btree_node_set_ptr(parent, path[level + 1].bp_index, in nilfs_btree_commit_update_v()
1957 path[level].bp_newreq.bpr_ptr, ncmax); in nilfs_btree_commit_update_v()
1962 int level, struct inode *dat) in nilfs_btree_abort_update_v() argument
1964 nilfs_dat_abort_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_abort_update_v()
1965 &path[level].bp_newreq.bpr_req); in nilfs_btree_abort_update_v()
1966 if (buffer_nilfs_node(path[level].bp_bh)) in nilfs_btree_abort_update_v()
1969 &path[level].bp_ctxt); in nilfs_btree_abort_update_v()
1977 int level, ret; in nilfs_btree_prepare_propagate_v() local
1979 level = minlevel; in nilfs_btree_prepare_propagate_v()
1980 if (!buffer_nilfs_volatile(path[level].bp_bh)) { in nilfs_btree_prepare_propagate_v()
1981 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1985 while ((++level < nilfs_btree_height(btree) - 1) && in nilfs_btree_prepare_propagate_v()
1986 !buffer_dirty(path[level].bp_bh)) { in nilfs_btree_prepare_propagate_v()
1988 WARN_ON(buffer_nilfs_volatile(path[level].bp_bh)); in nilfs_btree_prepare_propagate_v()
1989 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1995 *maxlevelp = level - 1; in nilfs_btree_prepare_propagate_v()
2000 while (--level > minlevel) in nilfs_btree_prepare_propagate_v()
2001 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2002 if (!buffer_nilfs_volatile(path[level].bp_bh)) in nilfs_btree_prepare_propagate_v()
2003 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2013 int level; in nilfs_btree_commit_propagate_v() local
2018 for (level = minlevel + 1; level <= maxlevel; level++) in nilfs_btree_commit_propagate_v()
2019 nilfs_btree_commit_update_v(btree, path, level, dat); in nilfs_btree_commit_propagate_v()
2024 int level, struct buffer_head *bh) in nilfs_btree_propagate_v() argument
2033 path[level].bp_bh = bh; in nilfs_btree_propagate_v()
2034 ret = nilfs_btree_prepare_propagate_v(btree, path, level, &maxlevel, in nilfs_btree_propagate_v()
2039 if (buffer_nilfs_volatile(path[level].bp_bh)) { in nilfs_btree_propagate_v()
2040 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_propagate_v()
2042 path[level + 1].bp_index, in nilfs_btree_propagate_v()
2049 nilfs_btree_commit_propagate_v(btree, path, level, maxlevel, bh, dat); in nilfs_btree_propagate_v()
2052 brelse(path[level].bp_bh); in nilfs_btree_propagate_v()
2053 path[level].bp_bh = NULL; in nilfs_btree_propagate_v()
2063 int level, ret; in nilfs_btree_propagate() local
2074 level = nilfs_btree_node_get_level(node); in nilfs_btree_propagate()
2077 level = NILFS_BTREE_LEVEL_DATA; in nilfs_btree_propagate()
2080 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_propagate()
2084 "writing node/leaf block does not appear in b-tree (ino=%lu) at key=%llu, level=%d", in nilfs_btree_propagate()
2086 (unsigned long long)key, level); in nilfs_btree_propagate()
2091 nilfs_btree_propagate_v(btree, path, level, bh) : in nilfs_btree_propagate()
2092 nilfs_btree_propagate_p(btree, path, level, bh); in nilfs_btree_propagate()
2114 int level; in nilfs_btree_add_dirty_buffer() local
2119 level = nilfs_btree_node_get_level(node); in nilfs_btree_add_dirty_buffer()
2120 if (level < NILFS_BTREE_LEVEL_NODE_MIN || in nilfs_btree_add_dirty_buffer()
2121 level >= NILFS_BTREE_LEVEL_MAX) { in nilfs_btree_add_dirty_buffer()
2124 "invalid btree level: %d (key=%llu, ino=%lu, blocknr=%llu)", in nilfs_btree_add_dirty_buffer()
2125 level, (unsigned long long)key, in nilfs_btree_add_dirty_buffer()
2131 list_for_each(head, &lists[level]) { in nilfs_btree_add_dirty_buffer()
2150 int level, i; in nilfs_btree_lookup_dirty_buffers() local
2152 for (level = NILFS_BTREE_LEVEL_NODE_MIN; in nilfs_btree_lookup_dirty_buffers()
2153 level < NILFS_BTREE_LEVEL_MAX; in nilfs_btree_lookup_dirty_buffers()
2154 level++) in nilfs_btree_lookup_dirty_buffers()
2155 INIT_LIST_HEAD(&lists[level]); in nilfs_btree_lookup_dirty_buffers()
2173 for (level = NILFS_BTREE_LEVEL_NODE_MIN; in nilfs_btree_lookup_dirty_buffers()
2174 level < NILFS_BTREE_LEVEL_MAX; in nilfs_btree_lookup_dirty_buffers()
2175 level++) in nilfs_btree_lookup_dirty_buffers()
2176 list_splice_tail(&lists[level], listp); in nilfs_btree_lookup_dirty_buffers()
2181 int level, in nilfs_btree_assign_p() argument
2191 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_p()
2192 ptr = nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_assign_p()
2195 path[level].bp_ctxt.oldkey = ptr; in nilfs_btree_assign_p()
2196 path[level].bp_ctxt.newkey = blocknr; in nilfs_btree_assign_p()
2197 path[level].bp_ctxt.bh = *bh; in nilfs_btree_assign_p()
2200 &path[level].bp_ctxt); in nilfs_btree_assign_p()
2205 &path[level].bp_ctxt); in nilfs_btree_assign_p()
2206 *bh = path[level].bp_ctxt.bh; in nilfs_btree_assign_p()
2209 nilfs_btree_node_set_ptr(parent, path[level + 1].bp_index, blocknr, in nilfs_btree_assign_p()
2212 key = nilfs_btree_node_get_key(parent, path[level + 1].bp_index); in nilfs_btree_assign_p()
2215 binfo->bi_dat.bi_level = level; in nilfs_btree_assign_p()
2222 int level, in nilfs_btree_assign_v() argument
2234 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_v()
2235 ptr = nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_assign_v()
2243 key = nilfs_btree_node_get_key(parent, path[level + 1].bp_index); in nilfs_btree_assign_v()
2259 int level, ret; in nilfs_btree_assign() local
2268 level = nilfs_btree_node_get_level(node); in nilfs_btree_assign()
2271 level = NILFS_BTREE_LEVEL_DATA; in nilfs_btree_assign()
2274 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_assign()
2281 nilfs_btree_assign_v(btree, path, level, bh, blocknr, binfo) : in nilfs_btree_assign()
2282 nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo); in nilfs_btree_assign()
2317 static int nilfs_btree_mark(struct nilfs_bmap *btree, __u64 key, int level) in nilfs_btree_mark() argument
2328 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level + 1, 0); in nilfs_btree_mark()