Lines Matching refs:path
112 struct btrfs_path *path, u64 objectid);
116 struct btrfs_path *path,
378 struct btrfs_path *path, in overwrite_item() argument
403 ret = btrfs_search_slot(NULL, root, key, path, 0, 0); in overwrite_item()
410 u32 dst_size = btrfs_item_size(path->nodes[0], in overwrite_item()
411 path->slots[0]); in overwrite_item()
416 btrfs_release_path(path); in overwrite_item()
422 btrfs_release_path(path); in overwrite_item()
430 dst_ptr = btrfs_item_ptr_offset(path->nodes[0], path->slots[0]); in overwrite_item()
431 read_extent_buffer(path->nodes[0], dst_copy, dst_ptr, in overwrite_item()
444 btrfs_release_path(path); in overwrite_item()
457 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in overwrite_item()
459 nbytes = btrfs_inode_nbytes(path->nodes[0], item); in overwrite_item()
494 btrfs_release_path(path); in overwrite_item()
496 path->skip_release_on_error = 1; in overwrite_item()
497 ret = btrfs_insert_empty_item(trans, root, path, in overwrite_item()
499 path->skip_release_on_error = 0; in overwrite_item()
504 found_size = btrfs_item_size(path->nodes[0], in overwrite_item()
505 path->slots[0]); in overwrite_item()
507 btrfs_truncate_item(path, item_size, 1); in overwrite_item()
509 btrfs_extend_item(path, item_size - found_size); in overwrite_item()
513 dst_ptr = btrfs_item_ptr_offset(path->nodes[0], in overwrite_item()
514 path->slots[0]); in overwrite_item()
533 struct extent_buffer *dst_eb = path->nodes[0]; in overwrite_item()
551 S_ISDIR(btrfs_inode_mode(path->nodes[0], dst_item))) { in overwrite_item()
553 saved_i_size = btrfs_inode_size(path->nodes[0], in overwrite_item()
558 copy_extent_buffer(path->nodes[0], eb, dst_ptr, in overwrite_item()
564 btrfs_set_inode_size(path->nodes[0], dst_item, saved_i_size); in overwrite_item()
571 if (btrfs_inode_generation(path->nodes[0], dst_item) == 0) { in overwrite_item()
572 btrfs_set_inode_generation(path->nodes[0], dst_item, in overwrite_item()
577 btrfs_mark_buffer_dirty(path->nodes[0]); in overwrite_item()
578 btrfs_release_path(path); in overwrite_item()
626 struct btrfs_path *path, in replay_one_extent() argument
676 ret = btrfs_lookup_file_extent(trans, root, path, in replay_one_extent()
687 leaf = path->nodes[0]; in replay_one_extent()
688 existing = btrfs_item_ptr(leaf, path->slots[0], in replay_one_extent()
701 btrfs_release_path(path); in replay_one_extent()
705 btrfs_release_path(path); in replay_one_extent()
725 ret = btrfs_insert_empty_item(trans, root, path, key, in replay_one_extent()
729 dest_offset = btrfs_item_ptr_offset(path->nodes[0], in replay_one_extent()
730 path->slots[0]); in replay_one_extent()
731 copy_extent_buffer(path->nodes[0], eb, dest_offset, in replay_one_extent()
788 btrfs_release_path(path); in replay_one_extent()
877 btrfs_release_path(path); in replay_one_extent()
881 ret = overwrite_item(trans, root, path, eb, slot, key); in replay_one_extent()
927 struct btrfs_path *path, in drop_one_dir_item() argument
938 leaf = path->nodes[0]; in drop_one_dir_item()
945 btrfs_release_path(path); in drop_one_dir_item()
953 ret = link_to_fixup_dir(trans, root, path, location.objectid); in drop_one_dir_item()
972 struct btrfs_path *path, in inode_in_dir() argument
980 di = btrfs_lookup_dir_index_item(NULL, root, path, dirid, in inode_in_dir()
986 btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location); in inode_in_dir()
993 btrfs_release_path(path); in inode_in_dir()
994 di = btrfs_lookup_dir_item(NULL, root, path, dirid, name, 0); in inode_in_dir()
999 btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location); in inode_in_dir()
1004 btrfs_release_path(path); in inode_in_dir()
1023 struct btrfs_path *path; in backref_in_log() local
1026 path = btrfs_alloc_path(); in backref_in_log()
1027 if (!path) in backref_in_log()
1030 ret = btrfs_search_slot(NULL, log, key, path, 0, 0); in backref_in_log()
1039 ret = !!btrfs_find_name_in_ext_backref(path->nodes[0], in backref_in_log()
1040 path->slots[0], in backref_in_log()
1043 ret = !!btrfs_find_name_in_backref(path->nodes[0], in backref_in_log()
1044 path->slots[0], name); in backref_in_log()
1046 btrfs_free_path(path); in backref_in_log()
1052 struct btrfs_path *path, in __add_inode_ref() argument
1070 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in __add_inode_ref()
1076 leaf = path->nodes[0]; in __add_inode_ref()
1088 ptr = btrfs_item_ptr_offset(leaf, path->slots[0]); in __add_inode_ref()
1089 ptr_end = ptr + btrfs_item_size(leaf, path->slots[0]); in __add_inode_ref()
1107 btrfs_release_path(path); in __add_inode_ref()
1121 btrfs_release_path(path); in __add_inode_ref()
1124 extref = btrfs_lookup_inode_extref(NULL, root, path, name, in __add_inode_ref()
1135 leaf = path->nodes[0]; in __add_inode_ref()
1137 item_size = btrfs_item_size(leaf, path->slots[0]); in __add_inode_ref()
1138 base = btrfs_item_ptr_offset(leaf, path->slots[0]); in __add_inode_ref()
1170 btrfs_release_path(path); in __add_inode_ref()
1187 btrfs_release_path(path); in __add_inode_ref()
1190 di = btrfs_lookup_dir_index_item(trans, root, path, btrfs_ino(dir), in __add_inode_ref()
1195 ret = drop_one_dir_item(trans, path, dir, di); in __add_inode_ref()
1199 btrfs_release_path(path); in __add_inode_ref()
1202 di = btrfs_lookup_dir_item(trans, root, path, btrfs_ino(dir), name, 0); in __add_inode_ref()
1206 ret = drop_one_dir_item(trans, path, dir, di); in __add_inode_ref()
1210 btrfs_release_path(path); in __add_inode_ref()
1265 struct btrfs_path *path, in unlink_old_inode_refs() argument
1277 btrfs_release_path(path); in unlink_old_inode_refs()
1278 ret = btrfs_search_slot(NULL, root, key, path, 0, 0); in unlink_old_inode_refs()
1286 eb = path->nodes[0]; in unlink_old_inode_refs()
1287 ref_ptr = btrfs_item_ptr_offset(eb, path->slots[0]); in unlink_old_inode_refs()
1288 ref_end = ref_ptr + btrfs_item_size(eb, path->slots[0]); in unlink_old_inode_refs()
1312 btrfs_release_path(path); in unlink_old_inode_refs()
1337 btrfs_release_path(path); in unlink_old_inode_refs()
1350 struct btrfs_path *path, in add_inode_ref() argument
1420 ret = inode_in_dir(root, path, btrfs_ino(BTRFS_I(dir)), in add_inode_ref()
1432 ret = __add_inode_ref(trans, root, path, log, in add_inode_ref()
1471 ret = unlink_old_inode_refs(trans, root, path, BTRFS_I(inode), eb, slot, in add_inode_ref()
1477 ret = overwrite_item(trans, root, path, eb, slot, key); in add_inode_ref()
1479 btrfs_release_path(path); in add_inode_ref()
1487 struct btrfs_inode *inode, struct btrfs_path *path) in count_inode_extrefs() argument
1501 ret = btrfs_find_one_extref(root, inode_objectid, offset, path, in count_inode_extrefs()
1506 leaf = path->nodes[0]; in count_inode_extrefs()
1507 item_size = btrfs_item_size(leaf, path->slots[0]); in count_inode_extrefs()
1508 ptr = btrfs_item_ptr_offset(leaf, path->slots[0]); in count_inode_extrefs()
1521 btrfs_release_path(path); in count_inode_extrefs()
1523 btrfs_release_path(path); in count_inode_extrefs()
1531 struct btrfs_inode *inode, struct btrfs_path *path) in count_inode_refs() argument
1546 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in count_inode_refs()
1550 if (path->slots[0] == 0) in count_inode_refs()
1552 path->slots[0]--; in count_inode_refs()
1555 btrfs_item_key_to_cpu(path->nodes[0], &key, in count_inode_refs()
1556 path->slots[0]); in count_inode_refs()
1560 ptr = btrfs_item_ptr_offset(path->nodes[0], path->slots[0]); in count_inode_refs()
1561 ptr_end = ptr + btrfs_item_size(path->nodes[0], in count_inode_refs()
1562 path->slots[0]); in count_inode_refs()
1567 name_len = btrfs_inode_ref_name_len(path->nodes[0], in count_inode_refs()
1575 if (path->slots[0] > 0) { in count_inode_refs()
1576 path->slots[0]--; in count_inode_refs()
1580 btrfs_release_path(path); in count_inode_refs()
1582 btrfs_release_path(path); in count_inode_refs()
1601 struct btrfs_path *path; in fixup_inode_link_count() local
1606 path = btrfs_alloc_path(); in fixup_inode_link_count()
1607 if (!path) in fixup_inode_link_count()
1610 ret = count_inode_refs(root, BTRFS_I(inode), path); in fixup_inode_link_count()
1616 ret = count_inode_extrefs(root, BTRFS_I(inode), path); in fixup_inode_link_count()
1634 ret = replay_dir_deletes(trans, root, NULL, path, in fixup_inode_link_count()
1645 btrfs_free_path(path); in fixup_inode_link_count()
1651 struct btrfs_path *path) in fixup_inode_link_counts() argument
1661 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); in fixup_inode_link_counts()
1667 if (path->slots[0] == 0) in fixup_inode_link_counts()
1669 path->slots[0]--; in fixup_inode_link_counts()
1672 btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); in fixup_inode_link_counts()
1677 ret = btrfs_del_item(trans, root, path); in fixup_inode_link_counts()
1681 btrfs_release_path(path); in fixup_inode_link_counts()
1700 btrfs_release_path(path); in fixup_inode_link_counts()
1712 struct btrfs_path *path, in link_to_fixup_dir() argument
1727 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); in link_to_fixup_dir()
1729 btrfs_release_path(path); in link_to_fixup_dir()
1781 struct btrfs_path *path, in delete_conflicting_dir_entry() argument
1789 btrfs_dir_item_key_to_cpu(path->nodes[0], dst_di, &found_key); in delete_conflicting_dir_entry()
1794 btrfs_dir_flags(path->nodes[0], dst_di) == log_flags) in delete_conflicting_dir_entry()
1804 return drop_one_dir_item(trans, path, dir, dst_di); in delete_conflicting_dir_entry()
1825 struct btrfs_path *path, in replay_one_name() argument
1854 ret = btrfs_lookup_inode(trans, root, path, &log_key, 0); in replay_one_name()
1855 btrfs_release_path(path); in replay_one_name()
1861 dir_dst_di = btrfs_lookup_dir_item(trans, root, path, key->objectid, in replay_one_name()
1867 ret = delete_conflicting_dir_entry(trans, BTRFS_I(dir), path, in replay_one_name()
1875 btrfs_release_path(path); in replay_one_name()
1877 index_dst_di = btrfs_lookup_dir_index_item(trans, root, path, in replay_one_name()
1884 ret = delete_conflicting_dir_entry(trans, BTRFS_I(dir), path, in replay_one_name()
1892 btrfs_release_path(path); in replay_one_name()
1929 btrfs_release_path(path); in replay_one_name()
1954 struct btrfs_path *path, in replay_one_dir_item() argument
1965 ret = replay_one_name(trans, root, path, eb, di, key); in replay_one_dir_item()
2023 struct btrfs_path *path, in find_dir_range() argument
2040 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in find_dir_range()
2044 if (path->slots[0] == 0) in find_dir_range()
2046 path->slots[0]--; in find_dir_range()
2049 btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); in find_dir_range()
2055 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in find_dir_range()
2057 found_end = btrfs_dir_log_end(path->nodes[0], item); in find_dir_range()
2068 nritems = btrfs_header_nritems(path->nodes[0]); in find_dir_range()
2069 path->slots[0]++; in find_dir_range()
2070 if (path->slots[0] >= nritems) { in find_dir_range()
2071 ret = btrfs_next_leaf(root, path); in find_dir_range()
2076 btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); in find_dir_range()
2082 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in find_dir_range()
2084 found_end = btrfs_dir_log_end(path->nodes[0], item); in find_dir_range()
2089 btrfs_release_path(path); in find_dir_range()
2100 struct btrfs_path *path, in check_item_in_log() argument
2122 eb = path->nodes[0]; in check_item_in_log()
2123 slot = path->slots[0]; in check_item_in_log()
2146 btrfs_release_path(path); in check_item_in_log()
2154 ret = link_to_fixup_dir(trans, root, path, location.objectid); in check_item_in_log()
2167 btrfs_release_path(path); in check_item_in_log()
2177 struct btrfs_path *path, in replay_xattr_deletes() argument
2194 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in replay_xattr_deletes()
2198 nritems = btrfs_header_nritems(path->nodes[0]); in replay_xattr_deletes()
2199 for (i = path->slots[0]; i < nritems; i++) { in replay_xattr_deletes()
2206 btrfs_item_key_to_cpu(path->nodes[0], &key, i); in replay_xattr_deletes()
2212 di = btrfs_item_ptr(path->nodes[0], i, struct btrfs_dir_item); in replay_xattr_deletes()
2213 total_size = btrfs_item_size(path->nodes[0], i); in replay_xattr_deletes()
2216 u16 name_len = btrfs_dir_name_len(path->nodes[0], di); in replay_xattr_deletes()
2217 u16 data_len = btrfs_dir_data_len(path->nodes[0], di); in replay_xattr_deletes()
2226 read_extent_buffer(path->nodes[0], name, in replay_xattr_deletes()
2234 btrfs_release_path(path); in replay_xattr_deletes()
2235 di = btrfs_lookup_xattr(trans, root, path, ino, in replay_xattr_deletes()
2244 path, di); in replay_xattr_deletes()
2247 btrfs_release_path(path); in replay_xattr_deletes()
2260 ret = btrfs_next_leaf(root, path); in replay_xattr_deletes()
2267 btrfs_release_path(path); in replay_xattr_deletes()
2285 struct btrfs_path *path, in replay_dir_deletes() argument
2318 ret = find_dir_range(log, path, dirid, in replay_dir_deletes()
2329 ret = btrfs_search_slot(NULL, root, &dir_key, path, in replay_dir_deletes()
2334 nritems = btrfs_header_nritems(path->nodes[0]); in replay_dir_deletes()
2335 if (path->slots[0] >= nritems) { in replay_dir_deletes()
2336 ret = btrfs_next_leaf(root, path); in replay_dir_deletes()
2342 btrfs_item_key_to_cpu(path->nodes[0], &found_key, in replay_dir_deletes()
2343 path->slots[0]); in replay_dir_deletes()
2353 ret = check_item_in_log(trans, log, path, in replay_dir_deletes()
2362 btrfs_release_path(path); in replay_dir_deletes()
2369 btrfs_release_path(path); in replay_dir_deletes()
2394 struct btrfs_path *path; in replay_one_buffer() local
2409 path = btrfs_alloc_path(); in replay_one_buffer()
2410 if (!path) in replay_one_buffer()
2440 path, key.objectid); in replay_one_buffer()
2446 root, log, path, key.objectid, 0); in replay_one_buffer()
2450 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2494 path, key.objectid); in replay_one_buffer()
2504 ret = replay_one_dir_item(wc->trans, root, path, in replay_one_buffer()
2515 ret = overwrite_item(wc->trans, root, path, in replay_one_buffer()
2521 ret = add_inode_ref(wc->trans, root, log, path, in replay_one_buffer()
2527 ret = replay_one_extent(wc->trans, root, path, in replay_one_buffer()
2539 btrfs_free_path(path); in replay_one_buffer()
2590 struct btrfs_path *path, int *level, in walk_down_log_tree() argument
2603 cur = path->nodes[*level]; in walk_down_log_tree()
2607 if (path->slots[*level] >= in walk_down_log_tree()
2611 bytenr = btrfs_node_blockptr(cur, path->slots[*level]); in walk_down_log_tree()
2612 ptr_gen = btrfs_node_ptr_generation(cur, path->slots[*level]); in walk_down_log_tree()
2616 btrfs_node_key_to_cpu(cur, &check.first_key, path->slots[*level]); in walk_down_log_tree()
2632 path->slots[*level]++; in walk_down_log_tree()
2655 if (path->nodes[*level-1]) in walk_down_log_tree()
2656 free_extent_buffer(path->nodes[*level-1]); in walk_down_log_tree()
2657 path->nodes[*level-1] = next; in walk_down_log_tree()
2659 path->slots[*level] = 0; in walk_down_log_tree()
2662 path->slots[*level] = btrfs_header_nritems(path->nodes[*level]); in walk_down_log_tree()
2670 struct btrfs_path *path, int *level, in walk_up_log_tree() argument
2677 for (i = *level; i < BTRFS_MAX_LEVEL - 1 && path->nodes[i]; i++) { in walk_up_log_tree()
2678 slot = path->slots[i]; in walk_up_log_tree()
2679 if (slot + 1 < btrfs_header_nritems(path->nodes[i])) { in walk_up_log_tree()
2680 path->slots[i]++; in walk_up_log_tree()
2685 ret = wc->process_func(root, path->nodes[*level], wc, in walk_up_log_tree()
2686 btrfs_header_generation(path->nodes[*level]), in walk_up_log_tree()
2692 ret = clean_log_buffer(trans, path->nodes[*level]); in walk_up_log_tree()
2696 free_extent_buffer(path->nodes[*level]); in walk_up_log_tree()
2697 path->nodes[*level] = NULL; in walk_up_log_tree()
2715 struct btrfs_path *path; in walk_log_tree() local
2718 path = btrfs_alloc_path(); in walk_log_tree()
2719 if (!path) in walk_log_tree()
2724 path->nodes[level] = log->node; in walk_log_tree()
2726 path->slots[level] = 0; in walk_log_tree()
2729 wret = walk_down_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2737 wret = walk_up_log_tree(trans, log, path, &level, wc); in walk_log_tree()
2747 if (path->nodes[orig_level]) { in walk_log_tree()
2748 ret = wc->process_func(log, path->nodes[orig_level], wc, in walk_log_tree()
2749 btrfs_header_generation(path->nodes[orig_level]), in walk_log_tree()
2754 ret = clean_log_buffer(trans, path->nodes[orig_level]); in walk_log_tree()
2758 btrfs_free_path(path); in walk_log_tree()
3259 struct btrfs_path *path = path_in; in inode_logged() local
3313 if (!path) { in inode_logged()
3314 path = btrfs_alloc_path(); in inode_logged()
3315 if (!path) in inode_logged()
3319 ret = btrfs_search_slot(NULL, inode->root->log_root, &key, path, 0, 0); in inode_logged()
3322 btrfs_release_path(path); in inode_logged()
3324 btrfs_free_path(path); in inode_logged()
3373 struct btrfs_path *path, in del_logged_dentry() argument
3384 di = btrfs_lookup_dir_index_item(trans, log, path, dir_ino, in del_logged_dentry()
3396 return btrfs_delete_one_dir_name(trans, log, path, di); in del_logged_dentry()
3425 struct btrfs_path *path; in btrfs_del_dir_entries_in_log() local
3442 path = btrfs_alloc_path(); in btrfs_del_dir_entries_in_log()
3443 if (!path) { in btrfs_del_dir_entries_in_log()
3448 ret = del_logged_dentry(trans, root->log_root, path, btrfs_ino(dir), in btrfs_del_dir_entries_in_log()
3450 btrfs_free_path(path); in btrfs_del_dir_entries_in_log()
3497 struct btrfs_path *path, in insert_dir_log_key() argument
3508 ret = btrfs_insert_empty_item(trans, log, path, &key, sizeof(*item)); in insert_dir_log_key()
3519 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in insert_dir_log_key()
3522 const u64 curr_end = btrfs_dir_log_end(path->nodes[0], item); in insert_dir_log_key()
3532 btrfs_set_dir_log_end(path->nodes[0], item, last_offset); in insert_dir_log_key()
3533 btrfs_mark_buffer_dirty(path->nodes[0]); in insert_dir_log_key()
3534 btrfs_release_path(path); in insert_dir_log_key()
3632 struct btrfs_path *path, in process_dir_items_leaf() argument
3639 const int nritems = btrfs_header_nritems(path->nodes[0]); in process_dir_items_leaf()
3651 src = btrfs_clone_extent_buffer(path->nodes[0]); in process_dir_items_leaf()
3655 i = path->slots[0]; in process_dir_items_leaf()
3656 btrfs_release_path(path); in process_dir_items_leaf()
3657 path->nodes[0] = src; in process_dir_items_leaf()
3658 path->slots[0] = i; in process_dir_items_leaf()
3751 struct btrfs_path *path, in log_dir_items() argument
3768 ret = btrfs_search_forward(root, &min_key, path, trans->transid); in log_dir_items()
3779 btrfs_release_path(path); in log_dir_items()
3780 ret = btrfs_search_slot(NULL, root, &min_key, path, 0, 0); in log_dir_items()
3782 btrfs_release_path(path); in log_dir_items()
3785 ret = btrfs_previous_item(root, path, ino, BTRFS_DIR_INDEX_KEY); in log_dir_items()
3795 btrfs_item_key_to_cpu(path->nodes[0], &tmp, in log_dir_items()
3796 path->slots[0]); in log_dir_items()
3807 ret = btrfs_previous_item(root, path, ino, BTRFS_DIR_INDEX_KEY); in log_dir_items()
3811 btrfs_item_key_to_cpu(path->nodes[0], &tmp, path->slots[0]); in log_dir_items()
3826 btrfs_release_path(path); in log_dir_items()
3843 ret = btrfs_search_slot(NULL, root, &min_key, path, 0, 0); in log_dir_items()
3845 ret = btrfs_next_item(root, path); in log_dir_items()
3860 ret = process_dir_items_leaf(trans, inode, path, dst_path, ctx, in log_dir_items()
3867 path->slots[0] = btrfs_header_nritems(path->nodes[0]); in log_dir_items()
3873 ret = btrfs_next_leaf(root, path); in log_dir_items()
3881 btrfs_item_key_to_cpu(path->nodes[0], &min_key, path->slots[0]); in log_dir_items()
3886 if (btrfs_header_generation(path->nodes[0]) != trans->transid) { in log_dir_items()
3900 btrfs_release_path(path); in log_dir_items()
3906 btrfs_release_path(path); in log_dir_items()
3921 ret = insert_dir_log_key(trans, log, path, ino, in log_dir_items()
3938 struct btrfs_path *path, in update_last_dir_index_offset() argument
3959 ret = btrfs_search_slot(NULL, inode->root->log_root, &key, path, 0, 0); in update_last_dir_index_offset()
3974 if (path->slots[0] == 0) in update_last_dir_index_offset()
3984 btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0] - 1); in update_last_dir_index_offset()
3989 btrfs_release_path(path); in update_last_dir_index_offset()
4008 struct btrfs_path *path, in log_directory_changes() argument
4016 ret = update_last_dir_index_offset(inode, path, ctx); in log_directory_changes()
4024 ret = log_dir_items(trans, inode, path, dst_path, in log_directory_changes()
4044 struct btrfs_path *path, in drop_inode_items() argument
4058 ret = btrfs_search_slot(trans, log, &key, path, -1, 1); in drop_inode_items()
4062 if (path->slots[0] == 0) in drop_inode_items()
4064 path->slots[0]--; in drop_inode_items()
4067 btrfs_item_key_to_cpu(path->nodes[0], &found_key, in drop_inode_items()
4068 path->slots[0]); in drop_inode_items()
4075 ret = btrfs_bin_search(path->nodes[0], 0, &found_key, &start_slot); in drop_inode_items()
4079 ret = btrfs_del_items(trans, log, path, start_slot, in drop_inode_items()
4080 path->slots[0] - start_slot + 1); in drop_inode_items()
4087 btrfs_release_path(path); in drop_inode_items()
4089 btrfs_release_path(path); in drop_inode_items()
4174 struct btrfs_root *log, struct btrfs_path *path, in log_inode_item() argument
4191 ret = btrfs_search_slot(trans, log, &inode->location, path, 0, 1); in log_inode_item()
4205 ret = btrfs_insert_empty_item(trans, log, path, &inode->location, in log_inode_item()
4211 inode_item = btrfs_item_ptr(path->nodes[0], path->slots[0], in log_inode_item()
4213 fill_inode_item(trans, path->nodes[0], inode_item, &inode->vfs_inode, in log_inode_item()
4215 btrfs_release_path(path); in log_inode_item()
4625 struct btrfs_path *path, in log_one_extent() argument
4672 drop_args.path = path; in log_one_extent()
4687 ret = btrfs_insert_empty_item(trans, log, path, &key, in log_one_extent()
4692 leaf = path->nodes[0]; in log_one_extent()
4694 btrfs_item_ptr_offset(leaf, path->slots[0]), in log_one_extent()
4698 btrfs_release_path(path); in log_one_extent()
4713 struct btrfs_path *path) in btrfs_log_prealloc_extents() argument
4734 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_log_prealloc_extents()
4746 ret = btrfs_previous_item(root, path, ino, BTRFS_EXTENT_DATA_KEY); in btrfs_log_prealloc_extents()
4753 leaf = path->nodes[0]; in btrfs_log_prealloc_extents()
4754 slot = path->slots[0]; in btrfs_log_prealloc_extents()
4773 leaf = path->nodes[0]; in btrfs_log_prealloc_extents()
4774 slot = path->slots[0]; in btrfs_log_prealloc_extents()
4778 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_prealloc_extents()
4784 ret = btrfs_next_leaf(root, path); in btrfs_log_prealloc_extents()
4800 path->slots[0]++; in btrfs_log_prealloc_extents()
4818 path->slots[0]++; in btrfs_log_prealloc_extents()
4828 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_prealloc_extents()
4831 btrfs_release_path(path); in btrfs_log_prealloc_extents()
4838 struct btrfs_path *path, in btrfs_log_changed_extents() argument
4899 ret = log_one_extent(trans, inode, em, path, ctx); in btrfs_log_changed_extents()
4908 ret = btrfs_log_prealloc_extents(trans, inode, path); in btrfs_log_changed_extents()
4938 struct btrfs_path *path, u64 *size_ret) in logged_inode_size() argument
4947 ret = btrfs_search_slot(NULL, log, &key, path, 0, 0); in logged_inode_size()
4955 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in logged_inode_size()
4957 *size_ret = btrfs_inode_size(path->nodes[0], item); in logged_inode_size()
4973 btrfs_release_path(path); in logged_inode_size()
4988 struct btrfs_path *path, in btrfs_log_all_xattrs() argument
5006 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_log_all_xattrs()
5011 int slot = path->slots[0]; in btrfs_log_all_xattrs()
5012 struct extent_buffer *leaf = path->nodes[0]; in btrfs_log_all_xattrs()
5017 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
5023 ret = btrfs_next_leaf(root, path); in btrfs_log_all_xattrs()
5038 path->slots[0]++; in btrfs_log_all_xattrs()
5043 ret = copy_items(trans, inode, dst_path, path, in btrfs_log_all_xattrs()
5066 struct btrfs_path *path) in btrfs_log_holes() argument
5083 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_log_holes()
5088 struct extent_buffer *leaf = path->nodes[0]; in btrfs_log_holes()
5090 if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) { in btrfs_log_holes()
5091 ret = btrfs_next_leaf(root, path); in btrfs_log_holes()
5098 leaf = path->nodes[0]; in btrfs_log_holes()
5101 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); in btrfs_log_holes()
5114 btrfs_release_path(path); in btrfs_log_holes()
5128 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_log_holes()
5133 leaf = path->nodes[0]; in btrfs_log_holes()
5136 prev_extent_end = btrfs_file_extent_end(path); in btrfs_log_holes()
5137 path->slots[0]++; in btrfs_log_holes()
5144 btrfs_release_path(path); in btrfs_log_holes()
5376 struct btrfs_path *path; in log_new_dir_dentries() local
5391 path = btrfs_alloc_path(); in log_new_dir_dentries()
5392 if (!path) in log_new_dir_dentries()
5411 btrfs_for_each_slot(root->log_root, &key, &found_key, path, iter_ret) { in log_new_dir_dentries()
5412 struct extent_buffer *leaf = path->nodes[0]; in log_new_dir_dentries()
5427 di = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_dir_item); in log_new_dir_dentries()
5435 btrfs_release_path(path); in log_new_dir_dentries()
5467 btrfs_release_path(path); in log_new_dir_dentries()
5504 btrfs_free_path(path); in log_new_dir_dentries()
5536 struct btrfs_path *path) in conflicting_inode_is_dir() argument
5545 path->search_commit_root = 1; in conflicting_inode_is_dir()
5546 path->skip_locking = 1; in conflicting_inode_is_dir()
5548 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in conflicting_inode_is_dir()
5559 item = btrfs_item_ptr(path->nodes[0], path->slots[0], in conflicting_inode_is_dir()
5561 if (S_ISDIR(btrfs_inode_mode(path->nodes[0], item))) in conflicting_inode_is_dir()
5565 btrfs_release_path(path); in conflicting_inode_is_dir()
5566 path->search_commit_root = 0; in conflicting_inode_is_dir()
5567 path->skip_locking = 0; in conflicting_inode_is_dir()
5574 struct btrfs_path *path, in add_conflicting_inode() argument
5618 ret = conflicting_inode_is_dir(root, ino, path); in add_conflicting_inode()
5795 struct btrfs_path *path, in copy_inode_items_to_log() argument
5809 ret = btrfs_search_forward(root, min_key, path, trans->transid); in copy_inode_items_to_log()
5841 ret = btrfs_check_ref_name_override(path->nodes[0], in copy_inode_items_to_log()
5842 path->slots[0], min_key, inode, in copy_inode_items_to_log()
5852 ins_start_slot = path->slots[0]; in copy_inode_items_to_log()
5854 ret = copy_items(trans, inode, dst_path, path, in copy_inode_items_to_log()
5861 btrfs_release_path(path); in copy_inode_items_to_log()
5862 ret = add_conflicting_inode(trans, root, path, in copy_inode_items_to_log()
5873 ret = copy_items(trans, inode, dst_path, path, in copy_inode_items_to_log()
5882 if (ins_nr && ins_start_slot + ins_nr == path->slots[0]) { in copy_inode_items_to_log()
5886 ins_start_slot = path->slots[0]; in copy_inode_items_to_log()
5891 ret = copy_items(trans, inode, dst_path, path, ins_start_slot, in copy_inode_items_to_log()
5896 ins_start_slot = path->slots[0]; in copy_inode_items_to_log()
5898 path->slots[0]++; in copy_inode_items_to_log()
5899 if (path->slots[0] < btrfs_header_nritems(path->nodes[0])) { in copy_inode_items_to_log()
5900 btrfs_item_key_to_cpu(path->nodes[0], min_key, in copy_inode_items_to_log()
5901 path->slots[0]); in copy_inode_items_to_log()
5905 ret = copy_items(trans, inode, dst_path, path, in copy_inode_items_to_log()
5912 btrfs_release_path(path); in copy_inode_items_to_log()
5931 ret = copy_items(trans, inode, dst_path, path, ins_start_slot, in copy_inode_items_to_log()
5942 btrfs_release_path(path); in copy_inode_items_to_log()
5951 struct btrfs_path *path, in insert_delayed_items_batch() argument
5958 ret = btrfs_insert_empty_items(trans, log, path, batch); in insert_delayed_items_batch()
5965 data_ptr = btrfs_item_ptr(path->nodes[0], path->slots[0], char); in insert_delayed_items_batch()
5966 write_extent_buffer(path->nodes[0], &curr->data, in insert_delayed_items_batch()
5969 path->slots[0]++; in insert_delayed_items_batch()
5972 btrfs_release_path(path); in insert_delayed_items_batch()
5979 struct btrfs_path *path, in log_delayed_insertion_items() argument
6038 ret = insert_delayed_items_batch(trans, log, path, in log_delayed_insertion_items()
6061 ret = insert_delayed_items_batch(trans, log, path, &batch, first); in log_delayed_insertion_items()
6074 struct btrfs_path *path, in log_delayed_deletions_full() argument
6106 ret = insert_dir_log_key(trans, inode->root->log_root, path, in log_delayed_deletions_full()
6118 struct btrfs_path *path, in batch_delete_dir_index_items() argument
6125 struct extent_buffer *leaf = path->nodes[0]; in batch_delete_dir_index_items()
6127 int slot = path->slots[0] + 1; in batch_delete_dir_index_items()
6147 return btrfs_del_items(trans, inode->root->log_root, path, in batch_delete_dir_index_items()
6148 path->slots[0], slot - path->slots[0]); in batch_delete_dir_index_items()
6153 struct btrfs_path *path, in log_delayed_deletions_incremental() argument
6176 ret = btrfs_search_slot(trans, log, &key, path, -1, 1); in log_delayed_deletions_incremental()
6180 ret = batch_delete_dir_index_items(trans, inode, path, ctx, in log_delayed_deletions_incremental()
6188 btrfs_release_path(path); in log_delayed_deletions_incremental()
6209 ret = insert_dir_log_key(trans, log, path, key.objectid, in log_delayed_deletions_incremental()
6225 struct btrfs_path *path, in log_delayed_deletion_items() argument
6239 return log_delayed_deletions_incremental(trans, inode, path, in log_delayed_deletion_items()
6242 return log_delayed_deletions_full(trans, inode, path, delayed_del_list, in log_delayed_deletion_items()
6333 struct btrfs_path *path; in btrfs_log_inode() local
6350 path = btrfs_alloc_path(); in btrfs_log_inode()
6351 if (!path) in btrfs_log_inode()
6355 btrfs_free_path(path); in btrfs_log_inode()
6434 ret = inode_logged(trans, inode, path); in btrfs_log_inode()
6459 ret = drop_inode_items(trans, log, path, inode, in btrfs_log_inode()
6476 ret = logged_inode_size(log, inode, path, &logged_isize); in btrfs_log_inode()
6485 ret = drop_inode_items(trans, log, path, in btrfs_log_inode()
6503 ret = drop_inode_items(trans, log, path, inode, in btrfs_log_inode()
6527 path, dst_path, logged_isize, in btrfs_log_inode()
6533 btrfs_release_path(path); in btrfs_log_inode()
6535 ret = btrfs_log_all_xattrs(trans, inode, path, dst_path); in btrfs_log_inode()
6540 btrfs_release_path(path); in btrfs_log_inode()
6542 ret = btrfs_log_holes(trans, inode, path); in btrfs_log_inode()
6547 btrfs_release_path(path); in btrfs_log_inode()
6562 ret = btrfs_log_all_xattrs(trans, inode, path, dst_path); in btrfs_log_inode()
6565 btrfs_release_path(path); in btrfs_log_inode()
6582 ret = log_directory_changes(trans, inode, path, dst_path, ctx); in btrfs_log_inode()
6585 ret = log_delayed_insertion_items(trans, inode, path, in btrfs_log_inode()
6589 ret = log_delayed_deletion_items(trans, inode, path, in btrfs_log_inode()
6642 btrfs_free_path(path); in btrfs_log_inode()
6668 struct btrfs_path *path; in btrfs_log_all_parents() local
6673 path = btrfs_alloc_path(); in btrfs_log_all_parents()
6674 if (!path) in btrfs_log_all_parents()
6676 path->skip_locking = 1; in btrfs_log_all_parents()
6677 path->search_commit_root = 1; in btrfs_log_all_parents()
6682 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in btrfs_log_all_parents()
6687 struct extent_buffer *leaf = path->nodes[0]; in btrfs_log_all_parents()
6688 int slot = path->slots[0]; in btrfs_log_all_parents()
6694 ret = btrfs_next_leaf(root, path); in btrfs_log_all_parents()
6776 path->slots[0]++; in btrfs_log_all_parents()
6780 btrfs_free_path(path); in btrfs_log_all_parents()
6786 struct btrfs_path *path, in log_new_ancestors() argument
6791 btrfs_item_key_to_cpu(path->nodes[0], &found_key, path->slots[0]); in log_new_ancestors()
6802 btrfs_release_path(path); in log_new_ancestors()
6825 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in log_new_ancestors()
6829 leaf = path->nodes[0]; in log_new_ancestors()
6830 slot = path->slots[0]; in log_new_ancestors()
6832 ret = btrfs_next_leaf(root, path); in log_new_ancestors()
6837 leaf = path->nodes[0]; in log_new_ancestors()
6838 slot = path->slots[0]; in log_new_ancestors()
6894 struct btrfs_path *path; in log_all_new_ancestors() local
6905 path = btrfs_alloc_path(); in log_all_new_ancestors()
6906 if (!path) in log_all_new_ancestors()
6913 ret = btrfs_search_slot(NULL, root, &search_key, path, 0, 0); in log_all_new_ancestors()
6917 path->slots[0]++; in log_all_new_ancestors()
6920 struct extent_buffer *leaf = path->nodes[0]; in log_all_new_ancestors()
6921 int slot = path->slots[0]; in log_all_new_ancestors()
6925 ret = btrfs_next_leaf(root, path); in log_all_new_ancestors()
6958 ret = log_new_ancestors(trans, root, path, ctx); in log_all_new_ancestors()
6961 btrfs_release_path(path); in log_all_new_ancestors()
6966 btrfs_free_path(path); in log_all_new_ancestors()
7128 struct btrfs_path *path; in btrfs_recover_log_trees() local
7139 path = btrfs_alloc_path(); in btrfs_recover_log_trees()
7140 if (!path) in btrfs_recover_log_trees()
7166 ret = btrfs_search_slot(NULL, log_root_tree, &key, path, 0, 0); in btrfs_recover_log_trees()
7173 if (path->slots[0] == 0) in btrfs_recover_log_trees()
7175 path->slots[0]--; in btrfs_recover_log_trees()
7177 btrfs_item_key_to_cpu(path->nodes[0], &found_key, in btrfs_recover_log_trees()
7178 path->slots[0]); in btrfs_recover_log_trees()
7179 btrfs_release_path(path); in btrfs_recover_log_trees()
7228 path); in btrfs_recover_log_trees()
7236 btrfs_release_path(path); in btrfs_recover_log_trees()
7262 btrfs_release_path(path); in btrfs_recover_log_trees()
7277 btrfs_free_path(path); in btrfs_recover_log_trees()
7293 btrfs_free_path(path); in btrfs_recover_log_trees()
7445 struct btrfs_path *path; in btrfs_log_new_name() local
7473 path = btrfs_alloc_path(); in btrfs_log_new_name()
7474 if (!path) { in btrfs_log_new_name()
7491 ret = del_logged_dentry(trans, log, path, btrfs_ino(old_dir), in btrfs_log_new_name()
7498 btrfs_release_path(path); in btrfs_log_new_name()
7499 ret = insert_dir_log_key(trans, log, path, in btrfs_log_new_name()
7505 btrfs_free_path(path); in btrfs_log_new_name()