backref.h (1f422417945d08731e2915e0addb976f11b3a85a) backref.h (a37f232b7b65789cadc9834d389f6390de11b583)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2011 STRATO. All rights reserved.
4 */
5
6#ifndef BTRFS_BACKREF_H
7#define BTRFS_BACKREF_H
8

--- 64 unchanged lines hidden (view full) ---

73 struct btrfs_key key_for_search;
74 int level;
75 int count;
76 struct extent_inode_elem *inode_list;
77 u64 parent;
78 u64 wanted_disk_byte;
79};
80
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2011 STRATO. All rights reserved.
4 */
5
6#ifndef BTRFS_BACKREF_H
7#define BTRFS_BACKREF_H
8

--- 64 unchanged lines hidden (view full) ---

73 struct btrfs_key key_for_search;
74 int level;
75 int count;
76 struct extent_inode_elem *inode_list;
77 u64 parent;
78 u64 wanted_disk_byte;
79};
80
81/*
82 * Iterate backrefs of one extent.
83 *
84 * Now it only supports iteration of tree block in commit root.
85 */
86struct btrfs_backref_iter {
87 u64 bytenr;
88 struct btrfs_path *path;
89 struct btrfs_fs_info *fs_info;
90 struct btrfs_key cur_key;
91 u32 item_ptr;
92 u32 cur_ptr;
93 u32 end_ptr;
94};
95
96struct btrfs_backref_iter *btrfs_backref_iter_alloc(
97 struct btrfs_fs_info *fs_info, gfp_t gfp_flag);
98
99static inline void btrfs_backref_iter_free(struct btrfs_backref_iter *iter)
100{
101 if (!iter)
102 return;
103 btrfs_free_path(iter->path);
104 kfree(iter);
105}
106
107int btrfs_backref_iter_start(struct btrfs_backref_iter *iter, u64 bytenr);
108
109static inline void btrfs_backref_iter_release(struct btrfs_backref_iter *iter)
110{
111 iter->bytenr = 0;
112 iter->item_ptr = 0;
113 iter->cur_ptr = 0;
114 iter->end_ptr = 0;
115 btrfs_release_path(iter->path);
116 memset(&iter->cur_key, 0, sizeof(iter->cur_key));
117}
118
81#endif
119#endif