Lines Matching defs:iter

2850 int btrfs_backref_iter_start(struct btrfs_backref_iter *iter, u64 bytenr)
2852 struct btrfs_fs_info *fs_info = iter->fs_info;
2854 struct btrfs_path *path = iter->path;
2862 iter->bytenr = bytenr;
2884 memcpy(&iter->cur_key, &key, sizeof(key));
2885 iter->item_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2887 iter->end_ptr = (u32)(iter->item_ptr +
2903 iter->cur_ptr = (u32)(iter->item_ptr + sizeof(*ei));
2906 if (iter->cur_ptr >= iter->end_ptr) {
2917 btrfs_item_key_to_cpu(path->nodes[0], &iter->cur_key,
2919 if (iter->cur_key.objectid != bytenr ||
2920 (iter->cur_key.type != BTRFS_SHARED_BLOCK_REF_KEY &&
2921 iter->cur_key.type != BTRFS_TREE_BLOCK_REF_KEY)) {
2925 iter->cur_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2927 iter->item_ptr = iter->cur_ptr;
2928 iter->end_ptr = (u32)(iter->item_ptr + btrfs_item_size(
2934 btrfs_backref_iter_release(iter);
2942 * Caller needs to check whether it's inline ref or not by iter->cur_key.
2948 int btrfs_backref_iter_next(struct btrfs_backref_iter *iter)
2950 struct extent_buffer *eb = btrfs_backref_get_eb(iter);
2952 struct btrfs_path *path = iter->path;
2957 if (btrfs_backref_iter_is_inline_ref(iter)) {
2959 ASSERT(iter->cur_ptr < iter->end_ptr);
2961 if (btrfs_backref_has_tree_block_info(iter)) {
2969 ((unsigned long)iter->cur_ptr);
2974 iter->cur_ptr += size;
2975 if (iter->cur_ptr < iter->end_ptr)
2982 extent_root = btrfs_extent_root(iter->fs_info, iter->bytenr);
2983 ret = btrfs_next_item(extent_root, iter->path);
2987 btrfs_item_key_to_cpu(path->nodes[0], &iter->cur_key, path->slots[0]);
2988 if (iter->cur_key.objectid != iter->bytenr ||
2989 (iter->cur_key.type != BTRFS_TREE_BLOCK_REF_KEY &&
2990 iter->cur_key.type != BTRFS_SHARED_BLOCK_REF_KEY))
2992 iter->item_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2994 iter->cur_ptr = iter->item_ptr;
2995 iter->end_ptr = iter->item_ptr + (u32)btrfs_item_size(path->nodes[0],
3370 * @iter: Released backref iter for extent tree search
3376 struct btrfs_backref_iter *iter,
3384 ret = btrfs_backref_iter_start(iter, cur->bytenr);
3391 if (btrfs_backref_has_tree_block_info(iter)) {
3392 ret = btrfs_backref_iter_next(iter);
3422 for (; ret == 0; ret = btrfs_backref_iter_next(iter)) {
3428 eb = btrfs_backref_get_eb(iter);
3430 key.objectid = iter->bytenr;
3431 if (btrfs_backref_iter_is_inline_ref(iter)) {
3436 ((unsigned long)iter->cur_ptr);
3446 key.type = iter->cur_key.type;
3447 key.offset = iter->cur_key.offset;
3488 btrfs_backref_iter_release(iter);