Lines Matching refs:iter
2396 int btrfs_backref_iter_start(struct btrfs_backref_iter *iter, u64 bytenr) argument
2398 struct btrfs_fs_info *fs_info = iter->fs_info;
2399 struct btrfs_path *path = iter->path;
2407 iter->bytenr = bytenr;
2429 memcpy(&iter->cur_key, &key, sizeof(key));
2430 iter->item_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2432 iter->end_ptr = (u32)(iter->item_ptr +
2448 iter->cur_ptr = (u32)(iter->item_ptr + sizeof(*ei));
2451 if (iter->cur_ptr >= iter->end_ptr) {
2462 btrfs_item_key_to_cpu(path->nodes[0], &iter->cur_key,
2464 if (iter->cur_key.objectid != bytenr ||
2465 (iter->cur_key.type != BTRFS_SHARED_BLOCK_REF_KEY &&
2466 iter->cur_key.type != BTRFS_TREE_BLOCK_REF_KEY)) {
2470 iter->cur_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2472 iter->item_ptr = iter->cur_ptr;
2473 iter->end_ptr = (u32)(iter->item_ptr + btrfs_item_size_nr(
2479 btrfs_backref_iter_release(iter);
2493 int btrfs_backref_iter_next(struct btrfs_backref_iter *iter) argument
2495 struct extent_buffer *eb = btrfs_backref_get_eb(iter);
2496 struct btrfs_path *path = iter->path;
2501 if (btrfs_backref_iter_is_inline_ref(iter)) {
2503 ASSERT(iter->cur_ptr < iter->end_ptr);
2505 if (btrfs_backref_has_tree_block_info(iter)) {
2513 ((unsigned long)iter->cur_ptr);
2518 iter->cur_ptr += size;
2519 if (iter->cur_ptr < iter->end_ptr)
2526 ret = btrfs_next_item(iter->fs_info->extent_root, iter->path);
2530 btrfs_item_key_to_cpu(path->nodes[0], &iter->cur_key, path->slots[0]);
2531 if (iter->cur_key.objectid != iter->bytenr ||
2532 (iter->cur_key.type != BTRFS_TREE_BLOCK_REF_KEY &&
2533 iter->cur_key.type != BTRFS_SHARED_BLOCK_REF_KEY))
2535 iter->item_ptr = (u32)btrfs_item_ptr_offset(path->nodes[0],
2537 iter->cur_ptr = iter->item_ptr;
2538 iter->end_ptr = iter->item_ptr + (u32)btrfs_item_size_nr(path->nodes[0],
2915 struct btrfs_backref_iter *iter, argument
2924 ret = btrfs_backref_iter_start(iter, cur->bytenr);
2931 if (btrfs_backref_has_tree_block_info(iter)) {
2932 ret = btrfs_backref_iter_next(iter);
2962 for (; ret == 0; ret = btrfs_backref_iter_next(iter)) {
2968 eb = btrfs_backref_get_eb(iter);
2970 key.objectid = iter->bytenr;
2971 if (btrfs_backref_iter_is_inline_ref(iter)) {
2976 ((unsigned long)iter->cur_ptr);
2986 key.type = iter->cur_key.type;
2987 key.offset = iter->cur_key.offset;
3032 btrfs_backref_iter_release(iter);