Lines Matching refs:btree

58 static int nilfs_btree_get_new_block(const struct nilfs_bmap *btree,  in nilfs_btree_get_new_block()  argument
61 struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode; in nilfs_btree_get_new_block()
112 static int nilfs_btree_node_size(const struct nilfs_bmap *btree) in nilfs_btree_node_size() argument
114 return i_blocksize(btree->b_inode); in nilfs_btree_node_size()
117 static int nilfs_btree_nchildren_per_block(const struct nilfs_bmap *btree) in nilfs_btree_nchildren_per_block() argument
119 return btree->b_nchildren_per_block; in nilfs_btree_nchildren_per_block()
410 nilfs_btree_get_root(const struct nilfs_bmap *btree) in nilfs_btree_get_root() argument
412 return (struct nilfs_btree_node *)btree->b_u.u_data; in nilfs_btree_get_root()
427 static int nilfs_btree_height(const struct nilfs_bmap *btree) in nilfs_btree_height() argument
429 return nilfs_btree_node_get_level(nilfs_btree_get_root(btree)) + 1; in nilfs_btree_height()
433 nilfs_btree_get_node(const struct nilfs_bmap *btree, in nilfs_btree_get_node() argument
439 if (level == nilfs_btree_height(btree) - 1) { in nilfs_btree_get_node()
440 node = nilfs_btree_get_root(btree); in nilfs_btree_get_node()
444 *ncmaxp = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_get_node()
449 static int nilfs_btree_bad_node(const struct nilfs_bmap *btree, in nilfs_btree_bad_node() argument
454 nilfs_crit(btree->b_inode->i_sb, in nilfs_btree_bad_node()
456 btree->b_inode->i_ino, in nilfs_btree_bad_node()
470 static int __nilfs_btree_get_block(const struct nilfs_bmap *btree, __u64 ptr, in __nilfs_btree_get_block() argument
474 struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode; in __nilfs_btree_get_block()
513 nilfs_err(btree->b_inode->i_sb, in __nilfs_btree_get_block()
515 btree->b_inode->i_ino, (unsigned long long)ptr); in __nilfs_btree_get_block()
531 static int nilfs_btree_get_block(const struct nilfs_bmap *btree, __u64 ptr, in nilfs_btree_get_block() argument
534 return __nilfs_btree_get_block(btree, ptr, bhp, NULL); in nilfs_btree_get_block()
537 static int nilfs_btree_do_lookup(const struct nilfs_bmap *btree, in nilfs_btree_do_lookup() argument
547 node = nilfs_btree_get_root(btree); in nilfs_btree_do_lookup()
558 ncmax = nilfs_btree_nchildren_per_block(btree); 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()
575 if (nilfs_btree_bad_node(btree, node, level)) in nilfs_btree_do_lookup()
599 static int nilfs_btree_do_lookup_last(const struct nilfs_bmap *btree, in nilfs_btree_do_lookup_last() argument
607 node = nilfs_btree_get_root(btree); in nilfs_btree_do_lookup_last()
616 ncmax = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_do_lookup_last()
619 ret = nilfs_btree_get_block(btree, ptr, &path[level].bp_bh); in nilfs_btree_do_lookup_last()
623 if (nilfs_btree_bad_node(btree, node, level)) in nilfs_btree_do_lookup_last()
648 static int nilfs_btree_get_next_key(const struct nilfs_bmap *btree, in nilfs_btree_get_next_key() argument
653 int maxlevel = nilfs_btree_height(btree) - 1; in nilfs_btree_get_next_key()
660 node = nilfs_btree_get_root(btree); in nilfs_btree_get_next_key()
676 static int nilfs_btree_lookup(const struct nilfs_bmap *btree, in nilfs_btree_lookup() argument
686 ret = nilfs_btree_do_lookup(btree, path, key, ptrp, level, 0); in nilfs_btree_lookup()
693 static int nilfs_btree_lookup_contig(const struct nilfs_bmap *btree, in nilfs_btree_lookup_contig() argument
710 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level, 1); in nilfs_btree_lookup_contig()
714 if (NILFS_BMAP_USE_VBN(btree)) { in nilfs_btree_lookup_contig()
715 dat = nilfs_bmap_get_dat(btree); in nilfs_btree_lookup_contig()
725 maxlevel = nilfs_btree_height(btree) - 1; in nilfs_btree_lookup_contig()
726 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_lookup_contig()
748 p.node = nilfs_btree_get_node(btree, path, level + 1, &p.ncmax); in nilfs_btree_lookup_contig()
760 ret = __nilfs_btree_get_block(btree, ptr2, &path[level].bp_bh, in nilfs_btree_lookup_contig()
765 ncmax = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_lookup_contig()
777 static void nilfs_btree_promote_key(struct nilfs_bmap *btree, in nilfs_btree_promote_key() argument
781 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_promote_key()
789 (++level < nilfs_btree_height(btree) - 1)); in nilfs_btree_promote_key()
793 if (level == nilfs_btree_height(btree) - 1) { in nilfs_btree_promote_key()
794 nilfs_btree_node_set_key(nilfs_btree_get_root(btree), in nilfs_btree_promote_key()
799 static void nilfs_btree_do_insert(struct nilfs_bmap *btree, in nilfs_btree_do_insert() argument
806 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_do_insert()
808 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_do_insert()
815 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_insert()
819 node = nilfs_btree_get_root(btree); in nilfs_btree_do_insert()
826 static void nilfs_btree_carry_left(struct nilfs_bmap *btree, in nilfs_btree_carry_left() argument
837 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_carry_left()
854 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_left()
869 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_left()
872 static void nilfs_btree_carry_right(struct nilfs_bmap *btree, in nilfs_btree_carry_right() argument
883 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_carry_right()
901 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_right()
916 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_right()
919 static void nilfs_btree_split(struct nilfs_bmap *btree, in nilfs_btree_split() argument
929 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_split()
957 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_split()
969 static void nilfs_btree_grow(struct nilfs_bmap *btree, in nilfs_btree_grow() argument
976 root = nilfs_btree_get_root(btree); in nilfs_btree_grow()
978 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_grow()
992 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_grow()
998 static __u64 nilfs_btree_find_near(const struct nilfs_bmap *btree, in nilfs_btree_find_near() argument
1010 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1018 if (level <= nilfs_btree_height(btree) - 1) { in nilfs_btree_find_near()
1019 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1027 static __u64 nilfs_btree_find_target_v(const struct nilfs_bmap *btree, in nilfs_btree_find_target_v() argument
1033 ptr = nilfs_bmap_find_target_seq(btree, key); in nilfs_btree_find_target_v()
1038 ptr = nilfs_btree_find_near(btree, path); in nilfs_btree_find_target_v()
1044 return nilfs_bmap_find_target_in_group(btree); in nilfs_btree_find_target_v()
1047 static int nilfs_btree_prepare_insert(struct nilfs_bmap *btree, in nilfs_btree_prepare_insert() argument
1062 if (NILFS_BMAP_USE_VBN(btree)) { in nilfs_btree_prepare_insert()
1064 nilfs_btree_find_target_v(btree, path, key); in nilfs_btree_prepare_insert()
1065 dat = nilfs_bmap_get_dat(btree); in nilfs_btree_prepare_insert()
1068 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1072 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_prepare_insert()
1075 level < nilfs_btree_height(btree) - 1; in nilfs_btree_prepare_insert()
1084 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_insert()
1091 ret = nilfs_btree_get_block(btree, sibptr, &bh); in nilfs_btree_prepare_insert()
1109 ret = nilfs_btree_get_block(btree, sibptr, &bh); in nilfs_btree_prepare_insert()
1126 ret = nilfs_bmap_prepare_alloc_ptr(btree, in nilfs_btree_prepare_insert()
1130 ret = nilfs_btree_get_new_block(btree, in nilfs_btree_prepare_insert()
1145 node = nilfs_btree_get_root(btree); in nilfs_btree_prepare_insert()
1155 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1158 ret = nilfs_btree_get_new_block(btree, path[level].bp_newreq.bpr_ptr, in nilfs_btree_prepare_insert()
1181 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1185 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1189 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1196 static void nilfs_btree_commit_insert(struct nilfs_bmap *btree, in nilfs_btree_commit_insert() argument
1205 if (NILFS_BMAP_USE_VBN(btree)) { in nilfs_btree_commit_insert()
1206 nilfs_bmap_set_target_v(btree, key, ptr); in nilfs_btree_commit_insert()
1207 dat = nilfs_bmap_get_dat(btree); in nilfs_btree_commit_insert()
1211 nilfs_bmap_commit_alloc_ptr(btree, in nilfs_btree_commit_insert()
1213 path[level].bp_op(btree, path, level, &key, &ptr); in nilfs_btree_commit_insert()
1216 if (!nilfs_bmap_dirty(btree)) in nilfs_btree_commit_insert()
1217 nilfs_bmap_set_dirty(btree); in nilfs_btree_commit_insert()
1220 static int nilfs_btree_insert(struct nilfs_bmap *btree, __u64 key, __u64 ptr) in nilfs_btree_insert() argument
1230 ret = nilfs_btree_do_lookup(btree, path, key, NULL, in nilfs_btree_insert()
1238 ret = nilfs_btree_prepare_insert(btree, path, &level, key, ptr, &stats); in nilfs_btree_insert()
1241 nilfs_btree_commit_insert(btree, path, level, key, ptr); in nilfs_btree_insert()
1242 nilfs_inode_add_blocks(btree->b_inode, stats.bs_nblocks); in nilfs_btree_insert()
1249 static void nilfs_btree_do_delete(struct nilfs_bmap *btree, in nilfs_btree_do_delete() argument
1256 if (level < nilfs_btree_height(btree) - 1) { in nilfs_btree_do_delete()
1258 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_do_delete()
1264 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_delete()
1267 node = nilfs_btree_get_root(btree); in nilfs_btree_do_delete()
1274 static void nilfs_btree_borrow_left(struct nilfs_bmap *btree, in nilfs_btree_borrow_left() argument
1281 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_left()
1287 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_borrow_left()
1298 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_left()
1306 static void nilfs_btree_borrow_right(struct nilfs_bmap *btree, in nilfs_btree_borrow_right() argument
1313 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_right()
1319 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_borrow_right()
1331 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_right()
1339 static void nilfs_btree_concat_left(struct nilfs_bmap *btree, in nilfs_btree_concat_left() argument
1346 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_left()
1350 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_concat_left()
1365 static void nilfs_btree_concat_right(struct nilfs_bmap *btree, in nilfs_btree_concat_right() argument
1372 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_right()
1376 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_concat_right()
1390 static void nilfs_btree_shrink(struct nilfs_bmap *btree, in nilfs_btree_shrink() argument
1397 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_shrink()
1399 root = nilfs_btree_get_root(btree); in nilfs_btree_shrink()
1401 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_shrink()
1414 static void nilfs_btree_nop(struct nilfs_bmap *btree, in nilfs_btree_nop() argument
1420 static int nilfs_btree_prepare_delete(struct nilfs_bmap *btree, in nilfs_btree_prepare_delete() argument
1433 ncmin = NILFS_BTREE_NODE_NCHILDREN_MIN(nilfs_btree_node_size(btree)); in nilfs_btree_prepare_delete()
1434 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_prepare_delete()
1437 level < nilfs_btree_height(btree) - 1; in nilfs_btree_prepare_delete()
1442 ret = nilfs_bmap_prepare_end_ptr(btree, in nilfs_btree_prepare_delete()
1453 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_delete()
1461 ret = nilfs_btree_get_block(btree, sibptr, &bh); in nilfs_btree_prepare_delete()
1481 ret = nilfs_btree_get_block(btree, sibptr, &bh); in nilfs_btree_prepare_delete()
1507 WARN_ON(level != nilfs_btree_height(btree) - 2); in nilfs_btree_prepare_delete()
1528 node = nilfs_btree_get_root(btree); in nilfs_btree_prepare_delete()
1533 ret = nilfs_bmap_prepare_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1544 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1548 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1555 static void nilfs_btree_commit_delete(struct nilfs_bmap *btree, in nilfs_btree_commit_delete() argument
1562 nilfs_bmap_commit_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_commit_delete()
1563 path[level].bp_op(btree, path, level, NULL, NULL); in nilfs_btree_commit_delete()
1566 if (!nilfs_bmap_dirty(btree)) in nilfs_btree_commit_delete()
1567 nilfs_bmap_set_dirty(btree); in nilfs_btree_commit_delete()
1570 static int nilfs_btree_delete(struct nilfs_bmap *btree, __u64 key) in nilfs_btree_delete() argument
1582 ret = nilfs_btree_do_lookup(btree, path, key, NULL, in nilfs_btree_delete()
1588 dat = NILFS_BMAP_USE_VBN(btree) ? nilfs_bmap_get_dat(btree) : NULL; in nilfs_btree_delete()
1590 ret = nilfs_btree_prepare_delete(btree, path, &level, &stats, dat); in nilfs_btree_delete()
1593 nilfs_btree_commit_delete(btree, path, level, dat); in nilfs_btree_delete()
1594 nilfs_inode_sub_blocks(btree->b_inode, stats.bs_nblocks); in nilfs_btree_delete()
1601 static int nilfs_btree_seek_key(const struct nilfs_bmap *btree, __u64 start, in nilfs_btree_seek_key() argument
1612 ret = nilfs_btree_do_lookup(btree, path, start, NULL, minlevel, 0); in nilfs_btree_seek_key()
1616 ret = nilfs_btree_get_next_key(btree, path, minlevel, keyp); in nilfs_btree_seek_key()
1622 static int nilfs_btree_last_key(const struct nilfs_bmap *btree, __u64 *keyp) in nilfs_btree_last_key() argument
1631 ret = nilfs_btree_do_lookup_last(btree, path, keyp, NULL); in nilfs_btree_last_key()
1638 static int nilfs_btree_check_delete(struct nilfs_bmap *btree, __u64 key) in nilfs_btree_check_delete() argument
1646 root = nilfs_btree_get_root(btree); in nilfs_btree_check_delete()
1647 switch (nilfs_btree_height(btree)) { in nilfs_btree_check_delete()
1658 ret = nilfs_btree_get_block(btree, ptr, &bh); in nilfs_btree_check_delete()
1676 static int nilfs_btree_gather_data(struct nilfs_bmap *btree, in nilfs_btree_gather_data() argument
1686 root = nilfs_btree_get_root(btree); in nilfs_btree_gather_data()
1687 switch (nilfs_btree_height(btree)) { in nilfs_btree_gather_data()
1698 ret = nilfs_btree_get_block(btree, ptr, &bh); in nilfs_btree_gather_data()
1702 ncmax = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_gather_data()
1725 nilfs_btree_prepare_convert_and_insert(struct nilfs_bmap *btree, __u64 key, in nilfs_btree_prepare_convert_and_insert() argument
1739 if (NILFS_BMAP_USE_VBN(btree)) { in nilfs_btree_prepare_convert_and_insert()
1740 dreq->bpr_ptr = nilfs_btree_find_target_v(btree, NULL, key); in nilfs_btree_prepare_convert_and_insert()
1741 dat = nilfs_bmap_get_dat(btree); in nilfs_btree_prepare_convert_and_insert()
1744 ret = nilfs_attach_btree_node_cache(&NILFS_BMAP_I(btree)->vfs_inode); in nilfs_btree_prepare_convert_and_insert()
1748 ret = nilfs_bmap_prepare_alloc_ptr(btree, dreq, dat); in nilfs_btree_prepare_convert_and_insert()
1756 ret = nilfs_bmap_prepare_alloc_ptr(btree, nreq, dat); in nilfs_btree_prepare_convert_and_insert()
1760 ret = nilfs_btree_get_new_block(btree, nreq->bpr_ptr, &bh); in nilfs_btree_prepare_convert_and_insert()
1773 nilfs_bmap_abort_alloc_ptr(btree, nreq, dat); in nilfs_btree_prepare_convert_and_insert()
1775 nilfs_bmap_abort_alloc_ptr(btree, dreq, dat); in nilfs_btree_prepare_convert_and_insert()
1782 nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *btree, in nilfs_btree_commit_convert_and_insert() argument
1796 if (btree->b_ops->bop_clear != NULL) in nilfs_btree_commit_convert_and_insert()
1797 btree->b_ops->bop_clear(btree); in nilfs_btree_commit_convert_and_insert()
1803 dat = NILFS_BMAP_USE_VBN(btree) ? nilfs_bmap_get_dat(btree) : NULL; in nilfs_btree_commit_convert_and_insert()
1804 __nilfs_btree_init(btree); in nilfs_btree_commit_convert_and_insert()
1806 nilfs_bmap_commit_alloc_ptr(btree, dreq, dat); in nilfs_btree_commit_convert_and_insert()
1807 nilfs_bmap_commit_alloc_ptr(btree, nreq, dat); in nilfs_btree_commit_convert_and_insert()
1811 ncblk = nilfs_btree_nchildren_per_block(btree); in nilfs_btree_commit_convert_and_insert()
1816 if (!nilfs_bmap_dirty(btree)) in nilfs_btree_commit_convert_and_insert()
1817 nilfs_bmap_set_dirty(btree); in nilfs_btree_commit_convert_and_insert()
1822 node = nilfs_btree_get_root(btree); in nilfs_btree_commit_convert_and_insert()
1828 nilfs_bmap_commit_alloc_ptr(btree, dreq, dat); in nilfs_btree_commit_convert_and_insert()
1831 node = nilfs_btree_get_root(btree); in nilfs_btree_commit_convert_and_insert()
1837 if (!nilfs_bmap_dirty(btree)) in nilfs_btree_commit_convert_and_insert()
1838 nilfs_bmap_set_dirty(btree); in nilfs_btree_commit_convert_and_insert()
1841 if (NILFS_BMAP_USE_VBN(btree)) in nilfs_btree_commit_convert_and_insert()
1842 nilfs_bmap_set_target_v(btree, key, dreq->bpr_ptr); in nilfs_btree_commit_convert_and_insert()
1854 int nilfs_btree_convert_and_insert(struct nilfs_bmap *btree, in nilfs_btree_convert_and_insert() argument
1867 nilfs_btree_node_size(btree))) { in nilfs_btree_convert_and_insert()
1876 ret = nilfs_btree_prepare_convert_and_insert(btree, key, di, ni, &bh, in nilfs_btree_convert_and_insert()
1880 nilfs_btree_commit_convert_and_insert(btree, key, ptr, keys, ptrs, n, in nilfs_btree_convert_and_insert()
1882 nilfs_inode_add_blocks(btree->b_inode, stats.bs_nblocks); in nilfs_btree_convert_and_insert()
1886 static int nilfs_btree_propagate_p(struct nilfs_bmap *btree, in nilfs_btree_propagate_p() argument
1891 while ((++level < nilfs_btree_height(btree) - 1) && in nilfs_btree_propagate_p()
1898 static int nilfs_btree_prepare_update_v(struct nilfs_bmap *btree, in nilfs_btree_prepare_update_v() argument
1905 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_update_v()
1920 NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping, in nilfs_btree_prepare_update_v()
1933 static void nilfs_btree_commit_update_v(struct nilfs_bmap *btree, in nilfs_btree_commit_update_v() argument
1942 btree->b_ptr_type == NILFS_BMAP_PTR_VS); in nilfs_btree_commit_update_v()
1946 NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping, in nilfs_btree_commit_update_v()
1952 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_commit_update_v()
1957 static void nilfs_btree_abort_update_v(struct nilfs_bmap *btree, in nilfs_btree_abort_update_v() argument
1965 NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping, in nilfs_btree_abort_update_v()
1969 static int nilfs_btree_prepare_propagate_v(struct nilfs_bmap *btree, in nilfs_btree_prepare_propagate_v() argument
1978 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1982 while ((++level < nilfs_btree_height(btree) - 1) && in nilfs_btree_prepare_propagate_v()
1986 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1998 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2000 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2004 static void nilfs_btree_commit_propagate_v(struct nilfs_bmap *btree, in nilfs_btree_commit_propagate_v() argument
2013 nilfs_btree_commit_update_v(btree, path, minlevel, dat); in nilfs_btree_commit_propagate_v()
2016 nilfs_btree_commit_update_v(btree, path, level, dat); in nilfs_btree_commit_propagate_v()
2019 static int nilfs_btree_propagate_v(struct nilfs_bmap *btree, in nilfs_btree_propagate_v() argument
2025 struct inode *dat = nilfs_bmap_get_dat(btree); in nilfs_btree_propagate_v()
2031 ret = nilfs_btree_prepare_propagate_v(btree, path, level, &maxlevel, in nilfs_btree_propagate_v()
2037 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_propagate_v()
2046 nilfs_btree_commit_propagate_v(btree, path, level, maxlevel, bh, dat); in nilfs_btree_propagate_v()
2054 static int nilfs_btree_propagate(struct nilfs_bmap *btree, in nilfs_btree_propagate() argument
2073 key = nilfs_bmap_data_get_key(btree, bh); in nilfs_btree_propagate()
2077 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_propagate()
2080 nilfs_crit(btree->b_inode->i_sb, in nilfs_btree_propagate()
2082 btree->b_inode->i_ino, in nilfs_btree_propagate()
2087 ret = NILFS_BMAP_USE_VBN(btree) ? in nilfs_btree_propagate()
2088 nilfs_btree_propagate_v(btree, path, level, bh) : in nilfs_btree_propagate()
2089 nilfs_btree_propagate_p(btree, path, level, bh); in nilfs_btree_propagate()
2097 static int nilfs_btree_propagate_gc(struct nilfs_bmap *btree, in nilfs_btree_propagate_gc() argument
2100 return nilfs_dat_mark_dirty(nilfs_bmap_get_dat(btree), bh->b_blocknr); in nilfs_btree_propagate_gc()
2103 static void nilfs_btree_add_dirty_buffer(struct nilfs_bmap *btree, in nilfs_btree_add_dirty_buffer() argument
2120 nilfs_warn(btree->b_inode->i_sb, in nilfs_btree_add_dirty_buffer()
2123 btree->b_inode->i_ino, in nilfs_btree_add_dirty_buffer()
2138 static void nilfs_btree_lookup_dirty_buffers(struct nilfs_bmap *btree, in nilfs_btree_lookup_dirty_buffers() argument
2141 struct inode *btnc_inode = NILFS_BMAP_I(btree)->i_assoc_inode; in nilfs_btree_lookup_dirty_buffers()
2162 nilfs_btree_add_dirty_buffer(btree, in nilfs_btree_lookup_dirty_buffers()
2176 static int nilfs_btree_assign_p(struct nilfs_bmap *btree, in nilfs_btree_assign_p() argument
2188 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_p()
2196 NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping, in nilfs_btree_assign_p()
2201 NILFS_BMAP_I(btree)->i_assoc_inode->i_mapping, in nilfs_btree_assign_p()
2217 static int nilfs_btree_assign_v(struct nilfs_bmap *btree, in nilfs_btree_assign_v() argument
2225 struct inode *dat = nilfs_bmap_get_dat(btree); in nilfs_btree_assign_v()
2231 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_v()
2248 static int nilfs_btree_assign(struct nilfs_bmap *btree, in nilfs_btree_assign() argument
2267 key = nilfs_bmap_data_get_key(btree, *bh); in nilfs_btree_assign()
2271 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_assign()
2277 ret = NILFS_BMAP_USE_VBN(btree) ? in nilfs_btree_assign()
2278 nilfs_btree_assign_v(btree, path, level, bh, blocknr, binfo) : in nilfs_btree_assign()
2279 nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo); in nilfs_btree_assign()
2287 static int nilfs_btree_assign_gc(struct nilfs_bmap *btree, in nilfs_btree_assign_gc() argument
2296 ret = nilfs_dat_move(nilfs_bmap_get_dat(btree), (*bh)->b_blocknr, in nilfs_btree_assign_gc()
2305 key = nilfs_bmap_data_get_key(btree, *bh); in nilfs_btree_assign_gc()
2314 static int nilfs_btree_mark(struct nilfs_bmap *btree, __u64 key, int level) in nilfs_btree_mark() argument
2325 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level + 1, 0); in nilfs_btree_mark()
2330 ret = nilfs_btree_get_block(btree, ptr, &bh); in nilfs_btree_mark()
2339 if (!nilfs_bmap_dirty(btree)) in nilfs_btree_mark()
2340 nilfs_bmap_set_dirty(btree); in nilfs_btree_mark()