extent_io.h (7b4397386fbdc606eb053bc2a1cfd985aea59916) extent_io.h (43eb5f2975848743e5b14c5bef20f40d404a7a04)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef BTRFS_EXTENT_IO_H
4#define BTRFS_EXTENT_IO_H
5
6#include <linux/rbtree.h>
7#include <linux/refcount.h>
8#include "ulist.h"

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

101 * pointer will be called unconditionally.
102 */
103 extent_submit_bio_hook_t *submit_bio_hook;
104 int (*readpage_end_io_hook)(struct btrfs_io_bio *io_bio, u64 phy_offset,
105 struct page *page, u64 start, u64 end,
106 int mirror);
107};
108
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifndef BTRFS_EXTENT_IO_H
4#define BTRFS_EXTENT_IO_H
5
6#include <linux/rbtree.h>
7#include <linux/refcount.h>
8#include "ulist.h"

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

101 * pointer will be called unconditionally.
102 */
103 extent_submit_bio_hook_t *submit_bio_hook;
104 int (*readpage_end_io_hook)(struct btrfs_io_bio *io_bio, u64 phy_offset,
105 struct page *page, u64 start, u64 end,
106 int mirror);
107};
108
109enum {
110 IO_TREE_FS_INFO_FREED_EXTENTS0,
111 IO_TREE_FS_INFO_FREED_EXTENTS1,
112 IO_TREE_INODE_IO,
113 IO_TREE_INODE_IO_FAILURE,
114 IO_TREE_RELOC_BLOCKS,
115 IO_TREE_TRANS_DIRTY_PAGES,
116 IO_TREE_ROOT_DIRTY_LOG_PAGES,
117 IO_TREE_SELFTEST,
118};
119
109struct extent_io_tree {
110 struct rb_root state;
111 struct btrfs_fs_info *fs_info;
112 void *private_data;
113 u64 dirty_bytes;
114 bool track_uptodate;
120struct extent_io_tree {
121 struct rb_root state;
122 struct btrfs_fs_info *fs_info;
123 void *private_data;
124 u64 dirty_bytes;
125 bool track_uptodate;
126
127 /* Who owns this io tree, should be one of IO_TREE_* */
128 u8 owner;
129
115 spinlock_t lock;
116 const struct extent_io_ops *ops;
117};
118
119struct extent_state {
120 u64 start;
121 u64 end; /* inclusive */
122 struct rb_node rb_node;

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

236
237typedef struct extent_map *(get_extent_t)(struct btrfs_inode *inode,
238 struct page *page,
239 size_t pg_offset,
240 u64 start, u64 len,
241 int create);
242
243void extent_io_tree_init(struct btrfs_fs_info *fs_info,
130 spinlock_t lock;
131 const struct extent_io_ops *ops;
132};
133
134struct extent_state {
135 u64 start;
136 u64 end; /* inclusive */
137 struct rb_node rb_node;

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

251
252typedef struct extent_map *(get_extent_t)(struct btrfs_inode *inode,
253 struct page *page,
254 size_t pg_offset,
255 u64 start, u64 len,
256 int create);
257
258void extent_io_tree_init(struct btrfs_fs_info *fs_info,
244 struct extent_io_tree *tree, void *private_data);
259 struct extent_io_tree *tree, unsigned int owner,
260 void *private_data);
245int try_release_extent_mapping(struct page *page, gfp_t mask);
246int try_release_extent_buffer(struct page *page);
247int lock_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
248 struct extent_state **cached);
249
250static inline int lock_extent(struct extent_io_tree *tree, u64 start, u64 end)
251{
252 return lock_extent_bits(tree, start, end, NULL);

--- 284 unchanged lines hidden ---
261int try_release_extent_mapping(struct page *page, gfp_t mask);
262int try_release_extent_buffer(struct page *page);
263int lock_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
264 struct extent_state **cached);
265
266static inline int lock_extent(struct extent_io_tree *tree, u64 start, u64 end)
267{
268 return lock_extent_bits(tree, start, end, NULL);

--- 284 unchanged lines hidden ---