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
145 return (sc && sc->share_count > 1) ? BACKREF_FOUND_SHARED : 0; in extent_is_shared()
174 * A -1 return indicates ref1 is a 'lower' block than ref2, while 1
181 return -1; in prelim_ref_compare()
183 return 1; in prelim_ref_compare()
185 return -1; in prelim_ref_compare()
187 return 1; in prelim_ref_compare()
189 return -1; in prelim_ref_compare()
191 return 1; in prelim_ref_compare()
193 return -1; in prelim_ref_compare()
195 return 1; in prelim_ref_compare()
197 return -1; in prelim_ref_compare()
199 return 1; in prelim_ref_compare()
201 return -1; in prelim_ref_compare()
203 return 1; in prelim_ref_compare()
211 if ((!sc) || (oldcount == 0 && newcount < 1)) in update_share_count()
214 if (oldcount > 0 && newcount < 1) in update_share_count()
216 else if (oldcount < 1 && newcount > 0) in update_share_count()
317 * - column 1: we've the parent -> done
330 * - column 1, 3: we've the parent -> done
413 return 1; in is_shared_data_backref()
426 struct extent_buffer *eb; in add_all_parents() local
437 eb = path->nodes[level]; in add_all_parents()
438 ret = ulist_add(parents, eb->start, 0, GFP_NOFS); in add_all_parents()
445 * 1. We normally enter this function with the path already pointing to in add_all_parents()
454 eb = path->nodes[0]; in add_all_parents()
455 if (path->slots[0] >= btrfs_header_nritems(eb) || in add_all_parents()
456 is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
457 ref->root_id != btrfs_header_owner(eb)) { in add_all_parents()
465 eb = path->nodes[0]; in add_all_parents()
468 btrfs_item_key_to_cpu(eb, &key, slot); in add_all_parents()
480 (is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
481 ref->root_id != btrfs_header_owner(eb))) { in add_all_parents()
488 fi = btrfs_item_ptr(eb, slot, struct btrfs_file_extent_item); in add_all_parents()
489 disk_byte = btrfs_file_extent_disk_bytenr(eb, fi); in add_all_parents()
490 data_offset = btrfs_file_extent_offset(eb, fi); in add_all_parents()
500 ret = check_extent_in_eb(&key, eb, fi, in add_all_parents()
508 ret = ulist_add_merge_ptr(parents, eb->start, in add_all_parents()
544 struct extent_buffer *eb; in resolve_indirect_ref() local
585 if (root_level + 1 == level) in resolve_indirect_ref()
624 eb = path->nodes[level]; in resolve_indirect_ref()
625 while (!eb) { in resolve_indirect_ref()
627 ret = 1; in resolve_indirect_ref()
631 eb = path->nodes[level]; in resolve_indirect_ref()
793 struct extent_buffer *eb; in add_missing_keys() local
805 eb = read_tree_block(fs_info, ref->wanted_disk_byte, 0, in add_missing_keys()
806 ref->level - 1, NULL); in add_missing_keys()
807 if (IS_ERR(eb)) { in add_missing_keys()
809 return PTR_ERR(eb); in add_missing_keys()
810 } else if (!extent_buffer_uptodate(eb)) { in add_missing_keys()
812 free_extent_buffer(eb); in add_missing_keys()
816 btrfs_tree_read_lock(eb); in add_missing_keys()
817 if (btrfs_header_level(eb) == 0) in add_missing_keys()
818 btrfs_item_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
820 btrfs_node_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
822 btrfs_tree_read_unlock(eb); in add_missing_keys()
823 free_extent_buffer(eb); in add_missing_keys()
854 WARN_ON(1); in add_delayed_refs()
860 count = node->ref_mod * -1; in add_delayed_refs()
878 key_ptr, ref->level + 1, in add_delayed_refs()
889 ret = add_direct_ref(fs_info, preftrees, ref->level + 1, in add_delayed_refs()
938 WARN_ON(1); in add_delayed_refs()
988 ptr = (unsigned long)(ei + 1); in add_inline_refs()
1021 *info_level + 1, offset, in add_inline_refs()
1022 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
1028 sdref = (struct btrfs_shared_data_ref *)(iref + 1); in add_inline_refs()
1037 NULL, *info_level + 1, in add_inline_refs()
1038 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
1067 WARN_ON(1); in add_inline_refs()
1093 while (1) { in add_keyed_refs()
1117 info_level + 1, key.offset, in add_keyed_refs()
1118 bytenr, 1, NULL, GFP_NOFS); in add_keyed_refs()
1136 NULL, info_level + 1, bytenr, in add_keyed_refs()
1137 1, NULL, GFP_NOFS); in add_keyed_refs()
1166 WARN_ON(1); in add_keyed_refs()
1220 key.offset = (u64)-1;
1230 path->search_commit_root = 1;
1231 path->skip_locking = 1;
1235 path->skip_locking = 1;
1368 struct extent_buffer *eb; local
1370 eb = read_tree_block(fs_info, ref->parent, 0,
1372 if (IS_ERR(eb)) {
1373 ret = PTR_ERR(eb);
1375 } else if (!extent_buffer_uptodate(eb)) {
1376 free_extent_buffer(eb);
1382 btrfs_tree_read_lock(eb);
1383 btrfs_set_lock_blocking_read(eb);
1385 ret = find_extent_in_eb(eb, bytenr,
1388 btrfs_tree_read_unlock_blocking(eb);
1389 free_extent_buffer(eb);
1510 while (1) {
1558 * Return: 0 if extent is not shared, 1 if it is shared, < 0 on error.
1592 while (1) {
1596 /* this is the only condition under which we return 1 */
1597 ret = 1;
1644 while (1) {
1659 if (ret >= 1)
1714 s64 bytes_left = ((s64)size) - 1;
1715 struct extent_buffer *eb = eb_in; local
1723 path->leave_spinning = 1;
1724 while (1) {
1727 read_extent_buffer(eb, dest + bytes_left,
1729 if (eb != eb_in) {
1731 btrfs_tree_read_unlock_blocking(eb);
1732 free_extent_buffer(eb);
1748 eb = path->nodes[0];
1749 /* make sure we can use eb after releasing the path */
1750 if (eb != eb_in) {
1752 btrfs_set_lock_blocking_read(eb);
1757 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref);
1759 name_len = btrfs_inode_ref_name_len(eb, iref);
1760 name_off = (unsigned long)(iref + 1);
1790 const struct extent_buffer *eb; local
1799 key.offset = (u64)-1;
1824 eb = path->nodes[0];
1825 item_size = btrfs_item_size_nr(eb, path->slots[0]);
1828 ei = btrfs_item_ptr(eb, path->slots[0], struct btrfs_extent_item);
1829 flags = btrfs_extent_flags(eb, ei);
1855 * next ref. after the last ref was processed, 1 is returned.
1859 const struct extent_buffer *eb, argument
1872 flags = btrfs_extent_flags(eb, ei);
1877 (struct btrfs_extent_inline_ref *)(ei + 1);
1880 info = (struct btrfs_tree_block_info *)(ei + 1);
1882 (struct btrfs_extent_inline_ref *)(info + 1);
1885 *out_eiref = (struct btrfs_extent_inline_ref *)(ei + 1);
1894 *out_type = btrfs_get_extent_inline_ref_type(eb, *out_eiref,
1902 return 1; /* last */
1911 * returns 0 if data was provided, 1 if there was no more data to provide or
1914 int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb, argument
1922 if (*ptr == (unsigned long)-1)
1923 return 1;
1925 while (1) {
1926 ret = get_extent_inline_ref(ptr, eb, key, ei, item_size,
1935 if (ret == 1)
1936 return 1;
1940 *out_root = btrfs_extent_inline_ref_offset(eb, eiref);
1945 info = (struct btrfs_tree_block_info *)(ei + 1);
1946 *out_level = btrfs_tree_block_level(eb, info);
1952 if (ret == 1)
1953 *ptr = (unsigned long)-1;
2071 inodes->val[inodes->elem_cnt + 1] = offset;
2109 struct extent_buffer *eb, void *ctx);
2122 struct extent_buffer *eb; local
2129 parent ? parent + 1 : 0, BTRFS_INODE_REF_KEY,
2142 eb = btrfs_clone_extent_buffer(path->nodes[0]);
2143 if (!eb) {
2150 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref);
2152 for (cur = 0; cur < btrfs_item_size(eb, item); cur += len) {
2153 name_len = btrfs_inode_ref_name_len(eb, iref);
2160 (unsigned long)(iref + 1), eb, ctx);
2166 free_extent_buffer(eb);
2183 struct extent_buffer *eb; local
2189 while (1) {
2201 eb = btrfs_clone_extent_buffer(path->nodes[0]);
2202 if (!eb) {
2208 item_size = btrfs_item_size_nr(eb, slot);
2209 ptr = btrfs_item_ptr_offset(eb, slot);
2216 parent = btrfs_inode_extref_parent(eb, extref);
2217 name_len = btrfs_inode_extref_name_len(eb, extref);
2219 (unsigned long)&extref->name, eb, ctx);
2223 cur_offset += btrfs_inode_extref_name_len(eb, extref);
2226 free_extent_buffer(eb);
2261 struct extent_buffer *eb, void *ctx) argument
2273 fspath_min = (char *)ipath->fspath->val + (i + 1) * s_ptr;
2275 name_off, eb, inum, fspath_min, bytes_left);
2385 ret->path->search_commit_root = 1;
2386 ret->path->skip_locking = 1;
2402 key.offset = (u64)-1;
2491 struct extent_buffer *eb = btrfs_backref_get_eb(iter); local
2510 type = btrfs_extent_inline_ref_type(eb, iref);
2530 return 1;
2619 upper->lowest = 1;
2685 cur->is_reloc_root = 1;
2710 cur->level + 1);
2753 struct extent_buffer *eb; local
2764 cur->cowonly = 1;
2788 level = cur->level + 1;
2791 path->search_commit_root = 1;
2792 path->skip_locking = 1;
2803 eb = path->nodes[level];
2804 if (btrfs_node_blockptr(eb, path->slots[level]) != cur->bytenr) {
2807 cur->bytenr, level - 1, root->root_key.objectid,
2838 eb = path->nodes[level];
2839 rb_node = rb_simple_search(&cache->rb_root, eb->start);
2841 upper = btrfs_backref_alloc_node(cache, eb->start,
2842 lower->level + 1);
2849 upper->owner = btrfs_header_owner(eb);
2851 upper->cowonly = 1;
2857 if (btrfs_block_can_be_shared(root, eb))
2860 upper->checked = 1;
2882 upper->owner = btrfs_header_owner(eb);
2959 struct extent_buffer *eb; local
2964 eb = btrfs_backref_get_eb(iter);
2973 type = btrfs_get_extent_inline_ref_type(eb, iref,
2980 key.offset = btrfs_extent_inline_ref_offset(eb, iref);
3025 cur->checked = 1;