Lines Matching +full:1 +full:eb
28 const struct extent_buffer *eb, in check_extent_in_eb() argument
38 !btrfs_file_extent_compression(eb, fi) && in check_extent_in_eb()
39 !btrfs_file_extent_encryption(eb, fi) && in check_extent_in_eb()
40 !btrfs_file_extent_other_encoding(eb, fi)) { in check_extent_in_eb()
44 data_offset = btrfs_file_extent_offset(eb, fi); in check_extent_in_eb()
45 data_len = btrfs_file_extent_num_bytes(eb, fi); in check_extent_in_eb()
49 return 1; in check_extent_in_eb()
75 static int find_extent_in_eb(const struct extent_buffer *eb, in find_extent_in_eb() argument
93 nritems = btrfs_header_nritems(eb); in find_extent_in_eb()
95 btrfs_item_key_to_cpu(eb, &key, slot); in find_extent_in_eb()
98 fi = btrfs_item_ptr(eb, slot, struct btrfs_file_extent_item); in find_extent_in_eb()
99 extent_type = btrfs_file_extent_type(eb, fi); in find_extent_in_eb()
103 disk_byte = btrfs_file_extent_disk_bytenr(eb, fi); in find_extent_in_eb()
107 ret = check_extent_in_eb(&key, eb, fi, extent_item_pos, eie, ignore_offset); in find_extent_in_eb()
134 * - decremented when a ref->count transitions to <1
144 return (sc && sc->share_count > 1) ? BACKREF_FOUND_SHARED : 0; in extent_is_shared()
173 * A -1 return indicates ref1 is a 'lower' block than ref2, while 1
180 return -1; in prelim_ref_compare()
182 return 1; in prelim_ref_compare()
184 return -1; in prelim_ref_compare()
186 return 1; in prelim_ref_compare()
188 return -1; in prelim_ref_compare()
190 return 1; in prelim_ref_compare()
192 return -1; in prelim_ref_compare()
194 return 1; in prelim_ref_compare()
196 return -1; in prelim_ref_compare()
198 return 1; in prelim_ref_compare()
200 return -1; in prelim_ref_compare()
202 return 1; in prelim_ref_compare()
210 if ((!sc) || (oldcount == 0 && newcount < 1)) in update_share_count()
213 if (oldcount > 0 && newcount < 1) in update_share_count()
215 else if (oldcount < 1 && newcount > 0) in update_share_count()
314 * - column 1: we've the parent -> done
327 * - column 1, 3: we've the parent -> done
410 return 1; in is_shared_data_backref()
423 struct extent_buffer *eb; in add_all_parents() local
434 eb = path->nodes[level]; in add_all_parents()
435 ret = ulist_add(parents, eb->start, 0, GFP_NOFS); in add_all_parents()
442 * 1. We normally enter this function with the path already pointing to in add_all_parents()
451 eb = path->nodes[0]; in add_all_parents()
452 if (path->slots[0] >= btrfs_header_nritems(eb) || in add_all_parents()
453 is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
454 ref->root_id != btrfs_header_owner(eb)) { in add_all_parents()
462 eb = path->nodes[0]; in add_all_parents()
465 btrfs_item_key_to_cpu(eb, &key, slot); in add_all_parents()
477 (is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
478 ref->root_id != btrfs_header_owner(eb))) { in add_all_parents()
485 fi = btrfs_item_ptr(eb, slot, struct btrfs_file_extent_item); in add_all_parents()
486 disk_byte = btrfs_file_extent_disk_bytenr(eb, fi); in add_all_parents()
487 data_offset = btrfs_file_extent_offset(eb, fi); in add_all_parents()
497 ret = check_extent_in_eb(&key, eb, fi, in add_all_parents()
505 ret = ulist_add_merge_ptr(parents, eb->start, in add_all_parents()
541 struct extent_buffer *eb; in resolve_indirect_ref() local
582 if (root_level + 1 == level) in resolve_indirect_ref()
621 eb = path->nodes[level]; in resolve_indirect_ref()
622 while (!eb) { in resolve_indirect_ref()
624 ret = 1; in resolve_indirect_ref()
628 eb = path->nodes[level]; in resolve_indirect_ref()
774 struct extent_buffer *eb; in add_missing_keys() local
786 eb = read_tree_block(fs_info, ref->wanted_disk_byte, 0, in add_missing_keys()
787 ref->level - 1, NULL); in add_missing_keys()
788 if (IS_ERR(eb)) { in add_missing_keys()
790 return PTR_ERR(eb); in add_missing_keys()
791 } else if (!extent_buffer_uptodate(eb)) { in add_missing_keys()
793 free_extent_buffer(eb); in add_missing_keys()
797 btrfs_tree_read_lock(eb); in add_missing_keys()
798 if (btrfs_header_level(eb) == 0) in add_missing_keys()
799 btrfs_item_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
801 btrfs_node_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
803 btrfs_tree_read_unlock(eb); in add_missing_keys()
804 free_extent_buffer(eb); in add_missing_keys()
840 WARN_ON(1); in add_delayed_refs()
846 count = node->ref_mod * -1; in add_delayed_refs()
858 &tmp_op_key, ref->level + 1, in add_delayed_refs()
869 ret = add_direct_ref(fs_info, preftrees, ref->level + 1, in add_delayed_refs()
909 WARN_ON(1); in add_delayed_refs()
959 ptr = (unsigned long)(ei + 1); in add_inline_refs()
992 *info_level + 1, offset, in add_inline_refs()
993 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
999 sdref = (struct btrfs_shared_data_ref *)(iref + 1); in add_inline_refs()
1008 NULL, *info_level + 1, in add_inline_refs()
1009 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
1036 WARN_ON(1); in add_inline_refs()
1062 while (1) { in add_keyed_refs()
1086 info_level + 1, key.offset, in add_keyed_refs()
1087 bytenr, 1, NULL, GFP_NOFS); in add_keyed_refs()
1105 NULL, info_level + 1, bytenr, in add_keyed_refs()
1106 1, NULL, GFP_NOFS); in add_keyed_refs()
1134 WARN_ON(1); in add_keyed_refs()
1188 key.offset = (u64)-1;
1198 path->search_commit_root = 1;
1199 path->skip_locking = 1;
1203 path->skip_locking = 1;
1336 struct extent_buffer *eb; local
1338 eb = read_tree_block(fs_info, ref->parent, 0,
1340 if (IS_ERR(eb)) {
1341 ret = PTR_ERR(eb);
1343 } else if (!extent_buffer_uptodate(eb)) {
1344 free_extent_buffer(eb);
1350 btrfs_tree_read_lock(eb);
1351 btrfs_set_lock_blocking_read(eb);
1353 ret = find_extent_in_eb(eb, bytenr,
1356 btrfs_tree_read_unlock_blocking(eb);
1357 free_extent_buffer(eb);
1482 while (1) {
1530 * Return: 0 if extent is not shared, 1 if it is shared, < 0 on error.
1563 while (1) {
1567 /* this is the only condition under which we return 1 */
1568 ret = 1;
1614 while (1) {
1629 if (ret >= 1)
1684 s64 bytes_left = ((s64)size) - 1;
1685 struct extent_buffer *eb = eb_in; local
1693 path->leave_spinning = 1;
1694 while (1) {
1697 read_extent_buffer(eb, dest + bytes_left,
1699 if (eb != eb_in) {
1701 btrfs_tree_read_unlock_blocking(eb);
1702 free_extent_buffer(eb);
1718 eb = path->nodes[0];
1719 /* make sure we can use eb after releasing the path */
1720 if (eb != eb_in) {
1722 btrfs_set_lock_blocking_read(eb);
1727 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref);
1729 name_len = btrfs_inode_ref_name_len(eb, iref);
1730 name_off = (unsigned long)(iref + 1);
1760 const struct extent_buffer *eb; local
1769 key.offset = (u64)-1;
1794 eb = path->nodes[0];
1795 item_size = btrfs_item_size_nr(eb, path->slots[0]);
1798 ei = btrfs_item_ptr(eb, path->slots[0], struct btrfs_extent_item);
1799 flags = btrfs_extent_flags(eb, ei);
1825 * next ref. after the last ref was processed, 1 is returned.
1829 const struct extent_buffer *eb, argument
1842 flags = btrfs_extent_flags(eb, ei);
1847 (struct btrfs_extent_inline_ref *)(ei + 1);
1850 info = (struct btrfs_tree_block_info *)(ei + 1);
1852 (struct btrfs_extent_inline_ref *)(info + 1);
1855 *out_eiref = (struct btrfs_extent_inline_ref *)(ei + 1);
1864 *out_type = btrfs_get_extent_inline_ref_type(eb, *out_eiref,
1872 return 1; /* last */
1881 * returns 0 if data was provided, 1 if there was no more data to provide or
1884 int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb, argument
1892 if (*ptr == (unsigned long)-1)
1893 return 1;
1895 while (1) {
1896 ret = get_extent_inline_ref(ptr, eb, key, ei, item_size,
1905 if (ret == 1)
1906 return 1;
1910 *out_root = btrfs_extent_inline_ref_offset(eb, eiref);
1915 info = (struct btrfs_tree_block_info *)(ei + 1);
1916 *out_level = btrfs_tree_block_level(eb, info);
1922 if (ret == 1)
1923 *ptr = (unsigned long)-1;
2060 struct extent_buffer *eb, void *ctx);
2073 struct extent_buffer *eb; local
2080 parent ? parent + 1 : 0, BTRFS_INODE_REF_KEY,
2093 eb = btrfs_clone_extent_buffer(path->nodes[0]);
2094 if (!eb) {
2101 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref);
2103 for (cur = 0; cur < btrfs_item_size(eb, item); cur += len) {
2104 name_len = btrfs_inode_ref_name_len(eb, iref);
2111 (unsigned long)(iref + 1), eb, ctx);
2117 free_extent_buffer(eb);
2134 struct extent_buffer *eb; local
2140 while (1) {
2152 eb = btrfs_clone_extent_buffer(path->nodes[0]);
2153 if (!eb) {
2159 item_size = btrfs_item_size_nr(eb, slot);
2160 ptr = btrfs_item_ptr_offset(eb, slot);
2167 parent = btrfs_inode_extref_parent(eb, extref);
2168 name_len = btrfs_inode_extref_name_len(eb, extref);
2170 (unsigned long)&extref->name, eb, ctx);
2174 cur_offset += btrfs_inode_extref_name_len(eb, extref);
2177 free_extent_buffer(eb);
2212 struct extent_buffer *eb, void *ctx) argument
2224 fspath_min = (char *)ipath->fspath->val + (i + 1) * s_ptr;
2226 name_off, eb, inum, fspath_min, bytes_left);
2336 ret->path->search_commit_root = 1;
2337 ret->path->skip_locking = 1;
2353 key.offset = (u64)-1;
2442 struct extent_buffer *eb = btrfs_backref_get_eb(iter); local
2461 type = btrfs_extent_inline_ref_type(eb, iref);
2481 return 1;
2570 upper->lowest = 1;
2636 cur->is_reloc_root = 1;
2661 cur->level + 1);
2704 struct extent_buffer *eb; local
2715 cur->cowonly = 1;
2739 level = cur->level + 1;
2742 path->search_commit_root = 1;
2743 path->skip_locking = 1;
2754 eb = path->nodes[level];
2755 if (btrfs_node_blockptr(eb, path->slots[level]) != cur->bytenr) {
2758 cur->bytenr, level - 1, root->root_key.objectid,
2789 eb = path->nodes[level];
2790 rb_node = rb_simple_search(&cache->rb_root, eb->start);
2792 upper = btrfs_backref_alloc_node(cache, eb->start,
2793 lower->level + 1);
2800 upper->owner = btrfs_header_owner(eb);
2802 upper->cowonly = 1;
2808 if (btrfs_block_can_be_shared(root, eb))
2811 upper->checked = 1;
2833 upper->owner = btrfs_header_owner(eb);
2910 struct extent_buffer *eb; local
2915 eb = btrfs_backref_get_eb(iter);
2924 type = btrfs_get_extent_inline_ref_type(eb, iref,
2931 key.offset = btrfs_extent_inline_ref_offset(eb, iref);
2976 cur->checked = 1;