Lines Matching refs:path
38 struct nilfs_btree_path *path; in nilfs_btree_alloc_path() local
41 path = kmem_cache_alloc(nilfs_btree_path_cache, GFP_NOFS); in nilfs_btree_alloc_path()
42 if (path == NULL) in nilfs_btree_alloc_path()
46 path[level].bp_bh = NULL; in nilfs_btree_alloc_path()
47 path[level].bp_sib_bh = NULL; in nilfs_btree_alloc_path()
48 path[level].bp_index = 0; in nilfs_btree_alloc_path()
49 path[level].bp_oldreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; in nilfs_btree_alloc_path()
50 path[level].bp_newreq.bpr_ptr = NILFS_BMAP_INVALID_PTR; in nilfs_btree_alloc_path()
51 path[level].bp_op = NULL; in nilfs_btree_alloc_path()
55 return path; in nilfs_btree_alloc_path()
58 static void nilfs_btree_free_path(struct nilfs_btree_path *path) in nilfs_btree_free_path() argument
63 brelse(path[level].bp_bh); in nilfs_btree_free_path()
65 kmem_cache_free(nilfs_btree_path_cache, path); in nilfs_btree_free_path()
422 nilfs_btree_get_nonroot_node(const struct nilfs_btree_path *path, int level) in nilfs_btree_get_nonroot_node() argument
424 return (struct nilfs_btree_node *)path[level].bp_bh->b_data; in nilfs_btree_get_nonroot_node()
428 nilfs_btree_get_sib_node(const struct nilfs_btree_path *path, int level) in nilfs_btree_get_sib_node() argument
430 return (struct nilfs_btree_node *)path[level].bp_sib_bh->b_data; in nilfs_btree_get_sib_node()
440 const struct nilfs_btree_path *path, in nilfs_btree_get_node() argument
449 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_get_node()
536 struct nilfs_btree_path *path, in nilfs_btree_do_lookup() argument
553 path[level].bp_bh = NULL; in nilfs_btree_do_lookup()
554 path[level].bp_index = index; in nilfs_btree_do_lookup()
561 p.node = nilfs_btree_get_node(btree, path, level + 1, in nilfs_btree_do_lookup()
567 ret = __nilfs_btree_get_block(btree, ptr, &path[level].bp_bh, in nilfs_btree_do_lookup()
572 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_lookup()
586 path[level].bp_index = index; in nilfs_btree_do_lookup()
598 struct nilfs_btree_path *path, in nilfs_btree_do_lookup_last() argument
612 path[level].bp_bh = NULL; in nilfs_btree_do_lookup_last()
613 path[level].bp_index = index; in nilfs_btree_do_lookup_last()
617 ret = nilfs_btree_get_block(btree, ptr, &path[level].bp_bh); in nilfs_btree_do_lookup_last()
620 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_lookup_last()
625 path[level].bp_index = index; in nilfs_btree_do_lookup_last()
647 const struct nilfs_btree_path *path, in nilfs_btree_get_next_key() argument
660 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_get_next_key()
662 index = path[level].bp_index + next_adj; in nilfs_btree_get_next_key()
677 struct nilfs_btree_path *path; in nilfs_btree_lookup() local
680 path = nilfs_btree_alloc_path(); in nilfs_btree_lookup()
681 if (path == NULL) in nilfs_btree_lookup()
684 ret = nilfs_btree_do_lookup(btree, path, key, ptrp, level, 0); in nilfs_btree_lookup()
686 nilfs_btree_free_path(path); in nilfs_btree_lookup()
694 struct nilfs_btree_path *path; in nilfs_btree_lookup_contig() local
703 path = nilfs_btree_alloc_path(); in nilfs_btree_lookup_contig()
704 if (path == NULL) in nilfs_btree_lookup_contig()
707 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level, 1); in nilfs_btree_lookup_contig()
723 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_lookup_contig()
724 index = path[level].bp_index + 1; in nilfs_btree_lookup_contig()
746 p.node = nilfs_btree_get_node(btree, path, level + 1, &p.ncmax); in nilfs_btree_lookup_contig()
747 p.index = path[level + 1].bp_index + 1; in nilfs_btree_lookup_contig()
753 path[level + 1].bp_index = p.index; in nilfs_btree_lookup_contig()
755 brelse(path[level].bp_bh); in nilfs_btree_lookup_contig()
756 path[level].bp_bh = NULL; in nilfs_btree_lookup_contig()
758 ret = __nilfs_btree_get_block(btree, ptr2, &path[level].bp_bh, in nilfs_btree_lookup_contig()
762 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_lookup_contig()
765 path[level].bp_index = index; in nilfs_btree_lookup_contig()
771 nilfs_btree_free_path(path); in nilfs_btree_lookup_contig()
776 struct nilfs_btree_path *path, in nilfs_btree_promote_key() argument
782 nilfs_btree_get_nonroot_node(path, level), in nilfs_btree_promote_key()
783 path[level].bp_index, key); in nilfs_btree_promote_key()
784 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_promote_key()
785 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_promote_key()
786 } while ((path[level].bp_index == 0) && in nilfs_btree_promote_key()
793 path[level].bp_index, key); in nilfs_btree_promote_key()
798 struct nilfs_btree_path *path, in nilfs_btree_do_insert() argument
805 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_insert()
807 nilfs_btree_node_insert(node, path[level].bp_index, in nilfs_btree_do_insert()
809 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_do_insert()
810 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_do_insert()
812 if (path[level].bp_index == 0) in nilfs_btree_do_insert()
813 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_insert()
818 nilfs_btree_node_insert(node, path[level].bp_index, in nilfs_btree_do_insert()
825 struct nilfs_btree_path *path, in nilfs_btree_carry_left() argument
831 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_carry_left()
832 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_carry_left()
839 if (n > path[level].bp_index) { in nilfs_btree_carry_left()
847 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_carry_left()
848 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_carry_left()
849 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_carry_left()
850 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_carry_left()
852 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_left()
856 brelse(path[level].bp_bh); in nilfs_btree_carry_left()
857 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_carry_left()
858 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_left()
859 path[level].bp_index += lnchildren; in nilfs_btree_carry_left()
860 path[level + 1].bp_index--; in nilfs_btree_carry_left()
862 brelse(path[level].bp_sib_bh); in nilfs_btree_carry_left()
863 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_left()
864 path[level].bp_index -= n; in nilfs_btree_carry_left()
867 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_left()
871 struct nilfs_btree_path *path, in nilfs_btree_carry_right() argument
877 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_carry_right()
878 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_carry_right()
885 if (n > nchildren - path[level].bp_index) { in nilfs_btree_carry_right()
893 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_carry_right()
894 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_carry_right()
895 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_carry_right()
896 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_carry_right()
898 path[level + 1].bp_index++; in nilfs_btree_carry_right()
899 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_carry_right()
901 path[level + 1].bp_index--; in nilfs_btree_carry_right()
904 brelse(path[level].bp_bh); in nilfs_btree_carry_right()
905 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_carry_right()
906 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_right()
907 path[level].bp_index -= nilfs_btree_node_get_nchildren(node); in nilfs_btree_carry_right()
908 path[level + 1].bp_index++; in nilfs_btree_carry_right()
910 brelse(path[level].bp_sib_bh); in nilfs_btree_carry_right()
911 path[level].bp_sib_bh = NULL; in nilfs_btree_carry_right()
914 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_carry_right()
918 struct nilfs_btree_path *path, in nilfs_btree_split() argument
926 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_split()
927 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_split()
933 if (n > nchildren - path[level].bp_index) { in nilfs_btree_split()
940 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_split()
941 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_split()
942 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_split()
943 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_split()
946 newptr = path[level].bp_newreq.bpr_ptr; in nilfs_btree_split()
949 path[level].bp_index -= nilfs_btree_node_get_nchildren(node); in nilfs_btree_split()
950 nilfs_btree_node_insert(right, path[level].bp_index, in nilfs_btree_split()
954 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_split()
956 brelse(path[level].bp_bh); in nilfs_btree_split()
957 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_split()
958 path[level].bp_sib_bh = NULL; in nilfs_btree_split()
960 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_split()
963 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_split()
965 brelse(path[level].bp_sib_bh); in nilfs_btree_split()
966 path[level].bp_sib_bh = NULL; in nilfs_btree_split()
969 path[level + 1].bp_index++; in nilfs_btree_split()
973 struct nilfs_btree_path *path, in nilfs_btree_grow() argument
980 child = nilfs_btree_get_sib_node(path, level); in nilfs_btree_grow()
989 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_grow()
990 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_grow()
992 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_grow()
993 path[level].bp_sib_bh = NULL; in nilfs_btree_grow()
995 nilfs_btree_do_insert(btree, path, level, keyp, ptrp); in nilfs_btree_grow()
998 *ptrp = path[level].bp_newreq.bpr_ptr; in nilfs_btree_grow()
1002 const struct nilfs_btree_path *path) in nilfs_btree_find_near() argument
1007 if (path == NULL) in nilfs_btree_find_near()
1012 if (path[level].bp_index > 0) { in nilfs_btree_find_near()
1013 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1015 path[level].bp_index - 1, in nilfs_btree_find_near()
1022 node = nilfs_btree_get_node(btree, path, level, &ncmax); in nilfs_btree_find_near()
1023 return nilfs_btree_node_get_ptr(node, path[level].bp_index, in nilfs_btree_find_near()
1031 const struct nilfs_btree_path *path, in nilfs_btree_find_target_v() argument
1041 ptr = nilfs_btree_find_near(btree, path); in nilfs_btree_find_target_v()
1051 struct nilfs_btree_path *path, in nilfs_btree_prepare_insert() argument
1066 path[level].bp_newreq.bpr_ptr = in nilfs_btree_prepare_insert()
1067 nilfs_btree_find_target_v(btree, path, key); in nilfs_btree_prepare_insert()
1071 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1080 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_prepare_insert()
1082 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1087 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_insert()
1088 pindex = path[level + 1].bp_index; in nilfs_btree_prepare_insert()
1099 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1100 path[level].bp_op = nilfs_btree_carry_left; in nilfs_btree_prepare_insert()
1117 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1118 path[level].bp_op = nilfs_btree_carry_right; in nilfs_btree_prepare_insert()
1127 path[level].bp_newreq.bpr_ptr = in nilfs_btree_prepare_insert()
1128 path[level - 1].bp_newreq.bpr_ptr + 1; in nilfs_btree_prepare_insert()
1130 &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1134 path[level].bp_newreq.bpr_ptr, in nilfs_btree_prepare_insert()
1143 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1144 path[level].bp_op = nilfs_btree_split; in nilfs_btree_prepare_insert()
1151 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1157 path[level].bp_newreq.bpr_ptr = path[level - 1].bp_newreq.bpr_ptr + 1; in nilfs_btree_prepare_insert()
1158 ret = nilfs_bmap_prepare_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1161 ret = nilfs_btree_get_new_block(btree, path[level].bp_newreq.bpr_ptr, in nilfs_btree_prepare_insert()
1168 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_insert()
1169 path[level].bp_op = nilfs_btree_grow; in nilfs_btree_prepare_insert()
1172 path[level].bp_op = nilfs_btree_do_insert; in nilfs_btree_prepare_insert()
1184 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1187 nilfs_btnode_delete(path[level].bp_sib_bh); in nilfs_btree_prepare_insert()
1188 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1192 nilfs_bmap_abort_alloc_ptr(btree, &path[level].bp_newreq, dat); in nilfs_btree_prepare_insert()
1200 struct nilfs_btree_path *path, in nilfs_btree_commit_insert() argument
1207 ptr = path[NILFS_BTREE_LEVEL_DATA].bp_newreq.bpr_ptr; in nilfs_btree_commit_insert()
1215 &path[level - 1].bp_newreq, dat); in nilfs_btree_commit_insert()
1216 path[level].bp_op(btree, path, level, &key, &ptr); in nilfs_btree_commit_insert()
1225 struct nilfs_btree_path *path; in nilfs_btree_insert() local
1229 path = nilfs_btree_alloc_path(); in nilfs_btree_insert()
1230 if (path == NULL) in nilfs_btree_insert()
1233 ret = nilfs_btree_do_lookup(btree, path, key, NULL, in nilfs_btree_insert()
1241 ret = nilfs_btree_prepare_insert(btree, path, &level, key, ptr, &stats); in nilfs_btree_insert()
1244 nilfs_btree_commit_insert(btree, path, level, key, ptr); in nilfs_btree_insert()
1248 nilfs_btree_free_path(path); in nilfs_btree_insert()
1253 struct nilfs_btree_path *path, in nilfs_btree_do_delete() argument
1260 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_do_delete()
1262 nilfs_btree_node_delete(node, path[level].bp_index, in nilfs_btree_do_delete()
1264 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_do_delete()
1265 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_do_delete()
1266 if (path[level].bp_index == 0) in nilfs_btree_do_delete()
1267 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_do_delete()
1271 nilfs_btree_node_delete(node, path[level].bp_index, in nilfs_btree_do_delete()
1278 struct nilfs_btree_path *path, in nilfs_btree_borrow_left() argument
1284 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_left()
1286 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_borrow_left()
1287 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_borrow_left()
1296 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_borrow_left()
1297 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_borrow_left()
1298 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_borrow_left()
1299 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_borrow_left()
1301 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_left()
1304 brelse(path[level].bp_sib_bh); in nilfs_btree_borrow_left()
1305 path[level].bp_sib_bh = NULL; in nilfs_btree_borrow_left()
1306 path[level].bp_index += n; in nilfs_btree_borrow_left()
1310 struct nilfs_btree_path *path, in nilfs_btree_borrow_right() argument
1316 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_borrow_right()
1318 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_borrow_right()
1319 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_borrow_right()
1328 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_borrow_right()
1329 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_borrow_right()
1330 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_borrow_right()
1331 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_borrow_right()
1333 path[level + 1].bp_index++; in nilfs_btree_borrow_right()
1334 nilfs_btree_promote_key(btree, path, level + 1, in nilfs_btree_borrow_right()
1336 path[level + 1].bp_index--; in nilfs_btree_borrow_right()
1338 brelse(path[level].bp_sib_bh); in nilfs_btree_borrow_right()
1339 path[level].bp_sib_bh = NULL; in nilfs_btree_borrow_right()
1343 struct nilfs_btree_path *path, in nilfs_btree_concat_left() argument
1349 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_left()
1351 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_concat_left()
1352 left = nilfs_btree_get_sib_node(path, level); in nilfs_btree_concat_left()
1359 if (!buffer_dirty(path[level].bp_sib_bh)) in nilfs_btree_concat_left()
1360 mark_buffer_dirty(path[level].bp_sib_bh); in nilfs_btree_concat_left()
1362 nilfs_btnode_delete(path[level].bp_bh); in nilfs_btree_concat_left()
1363 path[level].bp_bh = path[level].bp_sib_bh; in nilfs_btree_concat_left()
1364 path[level].bp_sib_bh = NULL; in nilfs_btree_concat_left()
1365 path[level].bp_index += nilfs_btree_node_get_nchildren(left); in nilfs_btree_concat_left()
1369 struct nilfs_btree_path *path, in nilfs_btree_concat_right() argument
1375 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_concat_right()
1377 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_concat_right()
1378 right = nilfs_btree_get_sib_node(path, level); in nilfs_btree_concat_right()
1385 if (!buffer_dirty(path[level].bp_bh)) in nilfs_btree_concat_right()
1386 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_concat_right()
1388 nilfs_btnode_delete(path[level].bp_sib_bh); in nilfs_btree_concat_right()
1389 path[level].bp_sib_bh = NULL; in nilfs_btree_concat_right()
1390 path[level + 1].bp_index++; in nilfs_btree_concat_right()
1394 struct nilfs_btree_path *path, in nilfs_btree_shrink() argument
1400 nilfs_btree_do_delete(btree, path, level, keyp, ptrp); in nilfs_btree_shrink()
1403 child = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_shrink()
1413 nilfs_btnode_delete(path[level].bp_bh); in nilfs_btree_shrink()
1414 path[level].bp_bh = NULL; in nilfs_btree_shrink()
1418 struct nilfs_btree_path *path, in nilfs_btree_nop() argument
1424 struct nilfs_btree_path *path, in nilfs_btree_prepare_delete() argument
1439 for (level = NILFS_BTREE_LEVEL_NODE_MIN, dindex = path[level].bp_index; in nilfs_btree_prepare_delete()
1442 node = nilfs_btree_get_nonroot_node(path, level); in nilfs_btree_prepare_delete()
1443 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_delete()
1446 &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1451 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1456 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_delete()
1457 pindex = path[level + 1].bp_index; in nilfs_btree_prepare_delete()
1469 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1470 path[level].bp_op = nilfs_btree_borrow_left; in nilfs_btree_prepare_delete()
1474 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1475 path[level].bp_op = nilfs_btree_concat_left; in nilfs_btree_prepare_delete()
1489 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1490 path[level].bp_op = nilfs_btree_borrow_right; in nilfs_btree_prepare_delete()
1494 path[level].bp_sib_bh = bh; in nilfs_btree_prepare_delete()
1495 path[level].bp_op = nilfs_btree_concat_right; in nilfs_btree_prepare_delete()
1513 path[level].bp_op = nilfs_btree_shrink; in nilfs_btree_prepare_delete()
1516 path[level].bp_op = nilfs_btree_nop; in nilfs_btree_prepare_delete()
1519 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1527 path[level].bp_op = nilfs_btree_do_delete; in nilfs_btree_prepare_delete()
1532 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_delete()
1536 ret = nilfs_bmap_prepare_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1547 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1550 brelse(path[level].bp_sib_bh); in nilfs_btree_prepare_delete()
1551 nilfs_bmap_abort_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_prepare_delete()
1559 struct nilfs_btree_path *path, in nilfs_btree_commit_delete() argument
1565 nilfs_bmap_commit_end_ptr(btree, &path[level].bp_oldreq, dat); in nilfs_btree_commit_delete()
1566 path[level].bp_op(btree, path, level, NULL, NULL); in nilfs_btree_commit_delete()
1576 struct nilfs_btree_path *path; in nilfs_btree_delete() local
1581 path = nilfs_btree_alloc_path(); in nilfs_btree_delete()
1582 if (path == NULL) in nilfs_btree_delete()
1585 ret = nilfs_btree_do_lookup(btree, path, key, NULL, in nilfs_btree_delete()
1593 ret = nilfs_btree_prepare_delete(btree, path, &level, &stats, dat); in nilfs_btree_delete()
1596 nilfs_btree_commit_delete(btree, path, level, dat); in nilfs_btree_delete()
1600 nilfs_btree_free_path(path); in nilfs_btree_delete()
1607 struct nilfs_btree_path *path; in nilfs_btree_seek_key() local
1611 path = nilfs_btree_alloc_path(); in nilfs_btree_seek_key()
1612 if (!path) in nilfs_btree_seek_key()
1615 ret = nilfs_btree_do_lookup(btree, path, start, NULL, minlevel, 0); in nilfs_btree_seek_key()
1619 ret = nilfs_btree_get_next_key(btree, path, minlevel, keyp); in nilfs_btree_seek_key()
1621 nilfs_btree_free_path(path); in nilfs_btree_seek_key()
1627 struct nilfs_btree_path *path; in nilfs_btree_last_key() local
1630 path = nilfs_btree_alloc_path(); in nilfs_btree_last_key()
1631 if (path == NULL) in nilfs_btree_last_key()
1634 ret = nilfs_btree_do_lookup_last(btree, path, keyp, NULL); in nilfs_btree_last_key()
1636 nilfs_btree_free_path(path); in nilfs_btree_last_key()
1888 struct nilfs_btree_path *path, in nilfs_btree_propagate_p() argument
1893 !buffer_dirty(path[level].bp_bh)) in nilfs_btree_propagate_p()
1894 mark_buffer_dirty(path[level].bp_bh); in nilfs_btree_propagate_p()
1900 struct nilfs_btree_path *path, in nilfs_btree_prepare_update_v() argument
1906 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_prepare_update_v()
1907 path[level].bp_oldreq.bpr_ptr = in nilfs_btree_prepare_update_v()
1908 nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_prepare_update_v()
1910 path[level].bp_newreq.bpr_ptr = path[level].bp_oldreq.bpr_ptr + 1; in nilfs_btree_prepare_update_v()
1911 ret = nilfs_dat_prepare_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_prepare_update_v()
1912 &path[level].bp_newreq.bpr_req); in nilfs_btree_prepare_update_v()
1916 if (buffer_nilfs_node(path[level].bp_bh)) { in nilfs_btree_prepare_update_v()
1917 path[level].bp_ctxt.oldkey = path[level].bp_oldreq.bpr_ptr; in nilfs_btree_prepare_update_v()
1918 path[level].bp_ctxt.newkey = path[level].bp_newreq.bpr_ptr; in nilfs_btree_prepare_update_v()
1919 path[level].bp_ctxt.bh = path[level].bp_bh; in nilfs_btree_prepare_update_v()
1922 &path[level].bp_ctxt); in nilfs_btree_prepare_update_v()
1925 &path[level].bp_oldreq.bpr_req, in nilfs_btree_prepare_update_v()
1926 &path[level].bp_newreq.bpr_req); in nilfs_btree_prepare_update_v()
1935 struct nilfs_btree_path *path, in nilfs_btree_commit_update_v() argument
1941 nilfs_dat_commit_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_commit_update_v()
1942 &path[level].bp_newreq.bpr_req, in nilfs_btree_commit_update_v()
1945 if (buffer_nilfs_node(path[level].bp_bh)) { in nilfs_btree_commit_update_v()
1948 &path[level].bp_ctxt); in nilfs_btree_commit_update_v()
1949 path[level].bp_bh = path[level].bp_ctxt.bh; in nilfs_btree_commit_update_v()
1951 set_buffer_nilfs_volatile(path[level].bp_bh); in nilfs_btree_commit_update_v()
1953 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_commit_update_v()
1954 nilfs_btree_node_set_ptr(parent, path[level + 1].bp_index, in nilfs_btree_commit_update_v()
1955 path[level].bp_newreq.bpr_ptr, ncmax); in nilfs_btree_commit_update_v()
1959 struct nilfs_btree_path *path, in nilfs_btree_abort_update_v() argument
1962 nilfs_dat_abort_update(dat, &path[level].bp_oldreq.bpr_req, in nilfs_btree_abort_update_v()
1963 &path[level].bp_newreq.bpr_req); in nilfs_btree_abort_update_v()
1964 if (buffer_nilfs_node(path[level].bp_bh)) in nilfs_btree_abort_update_v()
1967 &path[level].bp_ctxt); in nilfs_btree_abort_update_v()
1971 struct nilfs_btree_path *path, in nilfs_btree_prepare_propagate_v() argument
1978 if (!buffer_nilfs_volatile(path[level].bp_bh)) { in nilfs_btree_prepare_propagate_v()
1979 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1984 !buffer_dirty(path[level].bp_bh)) { in nilfs_btree_prepare_propagate_v()
1986 WARN_ON(buffer_nilfs_volatile(path[level].bp_bh)); in nilfs_btree_prepare_propagate_v()
1987 ret = nilfs_btree_prepare_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
1999 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2000 if (!buffer_nilfs_volatile(path[level].bp_bh)) in nilfs_btree_prepare_propagate_v()
2001 nilfs_btree_abort_update_v(btree, path, level, dat); in nilfs_btree_prepare_propagate_v()
2006 struct nilfs_btree_path *path, in nilfs_btree_commit_propagate_v() argument
2013 if (!buffer_nilfs_volatile(path[minlevel].bp_bh)) in nilfs_btree_commit_propagate_v()
2014 nilfs_btree_commit_update_v(btree, path, minlevel, dat); in nilfs_btree_commit_propagate_v()
2017 nilfs_btree_commit_update_v(btree, path, level, dat); in nilfs_btree_commit_propagate_v()
2021 struct nilfs_btree_path *path, in nilfs_btree_propagate_v() argument
2031 path[level].bp_bh = bh; in nilfs_btree_propagate_v()
2032 ret = nilfs_btree_prepare_propagate_v(btree, path, level, &maxlevel, in nilfs_btree_propagate_v()
2037 if (buffer_nilfs_volatile(path[level].bp_bh)) { in nilfs_btree_propagate_v()
2038 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_propagate_v()
2040 path[level + 1].bp_index, in nilfs_btree_propagate_v()
2047 nilfs_btree_commit_propagate_v(btree, path, level, maxlevel, bh, dat); in nilfs_btree_propagate_v()
2050 brelse(path[level].bp_bh); in nilfs_btree_propagate_v()
2051 path[level].bp_bh = NULL; in nilfs_btree_propagate_v()
2058 struct nilfs_btree_path *path; in nilfs_btree_propagate() local
2065 path = nilfs_btree_alloc_path(); in nilfs_btree_propagate()
2066 if (path == NULL) in nilfs_btree_propagate()
2078 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_propagate()
2087 nilfs_btree_propagate_v(btree, path, level, bh) : in nilfs_btree_propagate()
2088 nilfs_btree_propagate_p(btree, path, level, bh); in nilfs_btree_propagate()
2091 nilfs_btree_free_path(path); in nilfs_btree_propagate()
2176 struct nilfs_btree_path *path, in nilfs_btree_assign_p() argument
2187 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_p()
2188 ptr = nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_assign_p()
2191 path[level].bp_ctxt.oldkey = ptr; in nilfs_btree_assign_p()
2192 path[level].bp_ctxt.newkey = blocknr; in nilfs_btree_assign_p()
2193 path[level].bp_ctxt.bh = *bh; in nilfs_btree_assign_p()
2196 &path[level].bp_ctxt); in nilfs_btree_assign_p()
2201 &path[level].bp_ctxt); in nilfs_btree_assign_p()
2202 *bh = path[level].bp_ctxt.bh; in nilfs_btree_assign_p()
2205 nilfs_btree_node_set_ptr(parent, path[level + 1].bp_index, blocknr, in nilfs_btree_assign_p()
2208 key = nilfs_btree_node_get_key(parent, path[level + 1].bp_index); in nilfs_btree_assign_p()
2217 struct nilfs_btree_path *path, in nilfs_btree_assign_v() argument
2230 parent = nilfs_btree_get_node(btree, path, level + 1, &ncmax); in nilfs_btree_assign_v()
2231 ptr = nilfs_btree_node_get_ptr(parent, path[level + 1].bp_index, in nilfs_btree_assign_v()
2239 key = nilfs_btree_node_get_key(parent, path[level + 1].bp_index); in nilfs_btree_assign_v()
2252 struct nilfs_btree_path *path; in nilfs_btree_assign() local
2257 path = nilfs_btree_alloc_path(); in nilfs_btree_assign()
2258 if (path == NULL) in nilfs_btree_assign()
2270 ret = nilfs_btree_do_lookup(btree, path, key, NULL, level + 1, 0); in nilfs_btree_assign()
2277 nilfs_btree_assign_v(btree, path, level, bh, blocknr, binfo) : in nilfs_btree_assign()
2278 nilfs_btree_assign_p(btree, path, level, bh, blocknr, binfo); in nilfs_btree_assign()
2281 nilfs_btree_free_path(path); in nilfs_btree_assign()
2316 struct nilfs_btree_path *path; in nilfs_btree_mark() local
2320 path = nilfs_btree_alloc_path(); in nilfs_btree_mark()
2321 if (path == NULL) in nilfs_btree_mark()
2324 ret = nilfs_btree_do_lookup(btree, path, key, &ptr, level + 1, 0); in nilfs_btree_mark()
2342 nilfs_btree_free_path(path); in nilfs_btree_mark()