Lines Matching +full:1 +full:eb

29 			      const struct extent_buffer *eb,  in check_extent_in_eb()  argument
39 !btrfs_file_extent_compression(eb, fi) && in check_extent_in_eb()
40 !btrfs_file_extent_encryption(eb, fi) && in check_extent_in_eb()
41 !btrfs_file_extent_other_encoding(eb, fi)) { in check_extent_in_eb()
45 data_offset = btrfs_file_extent_offset(eb, fi); in check_extent_in_eb()
46 data_len = btrfs_file_extent_num_bytes(eb, fi); in check_extent_in_eb()
50 return 1; in check_extent_in_eb()
76 static int find_extent_in_eb(const struct extent_buffer *eb, in find_extent_in_eb() argument
94 nritems = btrfs_header_nritems(eb); in find_extent_in_eb()
96 btrfs_item_key_to_cpu(eb, &key, slot); in find_extent_in_eb()
99 fi = btrfs_item_ptr(eb, slot, struct btrfs_file_extent_item); in find_extent_in_eb()
100 extent_type = btrfs_file_extent_type(eb, fi); in find_extent_in_eb()
104 disk_byte = btrfs_file_extent_disk_bytenr(eb, fi); in find_extent_in_eb()
108 ret = check_extent_in_eb(&key, eb, fi, extent_item_pos, eie, ignore_offset); in find_extent_in_eb()
135 * - decremented when a ref->count transitions to <1
146 return (sc && sc->share_count > 1) ? BACKREF_FOUND_SHARED : 0; in extent_is_shared()
175 * A -1 return indicates ref1 is a 'lower' block than ref2, while 1
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()
204 return 1; in prelim_ref_compare()
212 if ((!sc) || (oldcount == 0 && newcount < 1)) in update_share_count()
215 if (oldcount > 0 && newcount < 1) in update_share_count()
217 else if (oldcount < 1 && newcount > 0) in update_share_count()
318 * - column 1: we've the parent -> done
331 * - column 1, 3: we've the parent -> done
414 return 1; in is_shared_data_backref()
427 struct extent_buffer *eb; in add_all_parents() local
438 eb = path->nodes[level]; in add_all_parents()
439 ret = ulist_add(parents, eb->start, 0, GFP_NOFS); in add_all_parents()
446 * 1. We normally enter this function with the path already pointing to in add_all_parents()
455 eb = path->nodes[0]; in add_all_parents()
456 if (path->slots[0] >= btrfs_header_nritems(eb) || in add_all_parents()
457 is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
458 ref->root_id != btrfs_header_owner(eb)) { in add_all_parents()
466 eb = path->nodes[0]; in add_all_parents()
469 btrfs_item_key_to_cpu(eb, &key, slot); in add_all_parents()
481 (is_shared_data_backref(preftrees, eb->start) || in add_all_parents()
482 ref->root_id != btrfs_header_owner(eb))) { in add_all_parents()
489 fi = btrfs_item_ptr(eb, slot, struct btrfs_file_extent_item); in add_all_parents()
490 disk_byte = btrfs_file_extent_disk_bytenr(eb, fi); in add_all_parents()
491 data_offset = btrfs_file_extent_offset(eb, fi); in add_all_parents()
501 ret = check_extent_in_eb(&key, eb, fi, in add_all_parents()
509 ret = ulist_add_merge_ptr(parents, eb->start, in add_all_parents()
545 struct extent_buffer *eb; in resolve_indirect_ref() local
586 if (root_level + 1 == level) in resolve_indirect_ref()
625 eb = path->nodes[level]; in resolve_indirect_ref()
626 while (!eb) { in resolve_indirect_ref()
628 ret = 1; in resolve_indirect_ref()
632 eb = path->nodes[level]; in resolve_indirect_ref()
794 struct extent_buffer *eb; in add_missing_keys() local
806 eb = read_tree_block(fs_info, ref->wanted_disk_byte, in add_missing_keys()
807 ref->root_id, 0, ref->level - 1, NULL); in add_missing_keys()
808 if (IS_ERR(eb)) { in add_missing_keys()
810 return PTR_ERR(eb); in add_missing_keys()
812 if (!extent_buffer_uptodate(eb)) { in add_missing_keys()
814 free_extent_buffer(eb); in add_missing_keys()
819 btrfs_tree_read_lock(eb); in add_missing_keys()
820 if (btrfs_header_level(eb) == 0) in add_missing_keys()
821 btrfs_item_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
823 btrfs_node_key_to_cpu(eb, &ref->key_for_search, 0); in add_missing_keys()
825 btrfs_tree_read_unlock(eb); in add_missing_keys()
826 free_extent_buffer(eb); in add_missing_keys()
857 WARN_ON(1); in add_delayed_refs()
863 count = node->ref_mod * -1; in add_delayed_refs()
881 key_ptr, ref->level + 1, in add_delayed_refs()
892 ret = add_direct_ref(fs_info, preftrees, ref->level + 1, in add_delayed_refs()
941 WARN_ON(1); in add_delayed_refs()
991 ptr = (unsigned long)(ei + 1); in add_inline_refs()
1024 *info_level + 1, offset, in add_inline_refs()
1025 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
1031 sdref = (struct btrfs_shared_data_ref *)(iref + 1); in add_inline_refs()
1040 NULL, *info_level + 1, in add_inline_refs()
1041 bytenr, 1, NULL, GFP_NOFS); in add_inline_refs()
1070 WARN_ON(1); in add_inline_refs()
1096 while (1) { in add_keyed_refs()
1120 info_level + 1, key.offset, in add_keyed_refs()
1121 bytenr, 1, NULL, GFP_NOFS); in add_keyed_refs()
1139 NULL, info_level + 1, bytenr, in add_keyed_refs()
1140 1, NULL, GFP_NOFS); in add_keyed_refs()
1169 WARN_ON(1); in add_keyed_refs()
1224 key.offset = (u64)-1; in find_parent_nodes()
1234 path->search_commit_root = 1; in find_parent_nodes()
1235 path->skip_locking = 1; in find_parent_nodes()
1239 path->skip_locking = 1; in find_parent_nodes()
1365 struct extent_buffer *eb; in find_parent_nodes() local
1367 eb = read_tree_block(fs_info, ref->parent, 0, in find_parent_nodes()
1369 if (IS_ERR(eb)) { in find_parent_nodes()
1370 ret = PTR_ERR(eb); in find_parent_nodes()
1373 if (!extent_buffer_uptodate(eb)) { in find_parent_nodes()
1374 free_extent_buffer(eb); in find_parent_nodes()
1380 btrfs_tree_read_lock(eb); in find_parent_nodes()
1381 ret = find_extent_in_eb(eb, bytenr, in find_parent_nodes()
1384 btrfs_tree_read_unlock(eb); in find_parent_nodes()
1385 free_extent_buffer(eb); in find_parent_nodes()
1506 while (1) { in btrfs_find_all_roots_safe()
1560 * Level -1 is used for the data extent, which is not reliable to cache in lookup_backref_shared_cache()
1627 * Level -1 is used for the data extent, which is not reliable to cache in store_backref_shared_cache()
1681 * Return: 0 if extent is not shared, 1 if it is shared, < 0 on error.
1717 /* -1 means we are in the bytenr of the data extent. */ in btrfs_is_data_extent_shared()
1718 level = -1; in btrfs_is_data_extent_shared()
1721 while (1) { in btrfs_is_data_extent_shared()
1728 /* this is the only condition under which we return 1 */ in btrfs_is_data_extent_shared()
1729 ret = 1; in btrfs_is_data_extent_shared()
1746 if (level == -1 && in btrfs_is_data_extent_shared()
1753 * with a count > 1 for the same offset, which means there are 2 in btrfs_is_data_extent_shared()
1765 if (level == -1 && tmp->nnodes > 1) in btrfs_is_data_extent_shared()
1779 ret = (is_shared ? 1 : 0); in btrfs_is_data_extent_shared()
1819 while (1) { in btrfs_find_one_extref()
1834 if (ret >= 1) in btrfs_find_one_extref()
1889 s64 bytes_left = ((s64)size) - 1; in btrfs_ref_to_path()
1890 struct extent_buffer *eb = eb_in; in btrfs_ref_to_path() local
1897 while (1) { in btrfs_ref_to_path()
1900 read_extent_buffer(eb, dest + bytes_left, in btrfs_ref_to_path()
1902 if (eb != eb_in) { in btrfs_ref_to_path()
1904 btrfs_tree_read_unlock(eb); in btrfs_ref_to_path()
1905 free_extent_buffer(eb); in btrfs_ref_to_path()
1921 eb = path->nodes[0]; in btrfs_ref_to_path()
1922 /* make sure we can use eb after releasing the path */ in btrfs_ref_to_path()
1923 if (eb != eb_in) { in btrfs_ref_to_path()
1928 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref); in btrfs_ref_to_path()
1930 name_len = btrfs_inode_ref_name_len(eb, iref); in btrfs_ref_to_path()
1931 name_off = (unsigned long)(iref + 1); in btrfs_ref_to_path()
1961 const struct extent_buffer *eb; in extent_from_logical() local
1970 key.offset = (u64)-1; in extent_from_logical()
1995 eb = path->nodes[0]; in extent_from_logical()
1996 item_size = btrfs_item_size(eb, path->slots[0]); in extent_from_logical()
1999 ei = btrfs_item_ptr(eb, path->slots[0], struct btrfs_extent_item); in extent_from_logical()
2000 flags = btrfs_extent_flags(eb, ei); in extent_from_logical()
2026 * next ref. after the last ref was processed, 1 is returned.
2030 const struct extent_buffer *eb, in get_extent_inline_ref() argument
2043 flags = btrfs_extent_flags(eb, ei); in get_extent_inline_ref()
2048 (struct btrfs_extent_inline_ref *)(ei + 1); in get_extent_inline_ref()
2051 info = (struct btrfs_tree_block_info *)(ei + 1); in get_extent_inline_ref()
2053 (struct btrfs_extent_inline_ref *)(info + 1); in get_extent_inline_ref()
2056 *out_eiref = (struct btrfs_extent_inline_ref *)(ei + 1); in get_extent_inline_ref()
2065 *out_type = btrfs_get_extent_inline_ref_type(eb, *out_eiref, in get_extent_inline_ref()
2073 return 1; /* last */ in get_extent_inline_ref()
2082 * returns 0 if data was provided, 1 if there was no more data to provide or
2085 int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb, in tree_backref_for_extent() argument
2093 if (*ptr == (unsigned long)-1) in tree_backref_for_extent()
2094 return 1; in tree_backref_for_extent()
2096 while (1) { in tree_backref_for_extent()
2097 ret = get_extent_inline_ref(ptr, eb, key, ei, item_size, in tree_backref_for_extent()
2106 if (ret == 1) in tree_backref_for_extent()
2107 return 1; in tree_backref_for_extent()
2111 *out_root = btrfs_extent_inline_ref_offset(eb, eiref); in tree_backref_for_extent()
2116 info = (struct btrfs_tree_block_info *)(ei + 1); in tree_backref_for_extent()
2117 *out_level = btrfs_tree_block_level(eb, info); in tree_backref_for_extent()
2123 if (ret == 1) in tree_backref_for_extent()
2124 *ptr = (unsigned long)-1; in tree_backref_for_extent()
2242 inodes->val[inodes->elem_cnt + 1] = offset; in build_ino_list()
2280 struct extent_buffer *eb, struct inode_fs_paths *ipath);
2293 struct extent_buffer *eb; in iterate_inode_refs() local
2299 parent ? parent + 1 : 0, BTRFS_INODE_REF_KEY, in iterate_inode_refs()
2312 eb = btrfs_clone_extent_buffer(path->nodes[0]); in iterate_inode_refs()
2313 if (!eb) { in iterate_inode_refs()
2319 iref = btrfs_item_ptr(eb, slot, struct btrfs_inode_ref); in iterate_inode_refs()
2321 for (cur = 0; cur < btrfs_item_size(eb, slot); cur += len) { in iterate_inode_refs()
2322 name_len = btrfs_inode_ref_name_len(eb, iref); in iterate_inode_refs()
2329 (unsigned long)(iref + 1), eb, ipath); in iterate_inode_refs()
2335 free_extent_buffer(eb); in iterate_inode_refs()
2352 struct extent_buffer *eb; in iterate_inode_extrefs() local
2358 while (1) { in iterate_inode_extrefs()
2370 eb = btrfs_clone_extent_buffer(path->nodes[0]); in iterate_inode_extrefs()
2371 if (!eb) { in iterate_inode_extrefs()
2377 item_size = btrfs_item_size(eb, slot); in iterate_inode_extrefs()
2378 ptr = btrfs_item_ptr_offset(eb, slot); in iterate_inode_extrefs()
2385 parent = btrfs_inode_extref_parent(eb, extref); in iterate_inode_extrefs()
2386 name_len = btrfs_inode_extref_name_len(eb, extref); in iterate_inode_extrefs()
2388 (unsigned long)&extref->name, eb, ipath); in iterate_inode_extrefs()
2392 cur_offset += btrfs_inode_extref_name_len(eb, extref); in iterate_inode_extrefs()
2395 free_extent_buffer(eb); in iterate_inode_extrefs()
2410 struct extent_buffer *eb, struct inode_fs_paths *ipath) in inode_to_path() argument
2421 fspath_min = (char *)ipath->fspath->val + (i + 1) * s_ptr; in inode_to_path()
2423 name_off, eb, inum, fspath_min, bytes_left); in inode_to_path()
2545 ret->path->search_commit_root = 1; in btrfs_backref_iter_alloc()
2546 ret->path->skip_locking = 1; in btrfs_backref_iter_alloc()
2563 key.offset = (u64)-1; in btrfs_backref_iter_start()
2652 struct extent_buffer *eb = btrfs_backref_get_eb(iter); in btrfs_backref_iter_next() local
2672 type = btrfs_extent_inline_ref_type(eb, iref); in btrfs_backref_iter_next()
2693 return 1; in btrfs_backref_iter_next()
2782 upper->lowest = 1; in btrfs_backref_cleanup_node()
2848 cur->is_reloc_root = 1; in handle_direct_tree_backref()
2873 cur->level + 1); in handle_direct_tree_backref()
2916 struct extent_buffer *eb; in handle_indirect_tree_backref() local
2927 cur->cowonly = 1; in handle_indirect_tree_backref()
2951 level = cur->level + 1; in handle_indirect_tree_backref()
2954 path->search_commit_root = 1; in handle_indirect_tree_backref()
2955 path->skip_locking = 1; in handle_indirect_tree_backref()
2966 eb = path->nodes[level]; in handle_indirect_tree_backref()
2967 if (btrfs_node_blockptr(eb, path->slots[level]) != cur->bytenr) { in handle_indirect_tree_backref()
2970 cur->bytenr, level - 1, root->root_key.objectid, in handle_indirect_tree_backref()
3001 eb = path->nodes[level]; in handle_indirect_tree_backref()
3002 rb_node = rb_simple_search(&cache->rb_root, eb->start); in handle_indirect_tree_backref()
3004 upper = btrfs_backref_alloc_node(cache, eb->start, in handle_indirect_tree_backref()
3005 lower->level + 1); in handle_indirect_tree_backref()
3012 upper->owner = btrfs_header_owner(eb); in handle_indirect_tree_backref()
3014 upper->cowonly = 1; in handle_indirect_tree_backref()
3020 if (btrfs_block_can_be_shared(root, eb)) in handle_indirect_tree_backref()
3023 upper->checked = 1; in handle_indirect_tree_backref()
3045 upper->owner = btrfs_header_owner(eb); in handle_indirect_tree_backref()
3122 struct extent_buffer *eb; in btrfs_backref_add_tree_node() local
3127 eb = btrfs_backref_get_eb(iter); in btrfs_backref_add_tree_node()
3136 type = btrfs_get_extent_inline_ref_type(eb, iref, in btrfs_backref_add_tree_node()
3143 key.offset = btrfs_extent_inline_ref_offset(eb, iref); in btrfs_backref_add_tree_node()
3188 cur->checked = 1; in btrfs_backref_add_tree_node()