diff options
Diffstat (limited to 'fs/btrfs/extent_io.h')
| -rw-r--r-- | fs/btrfs/extent_io.h | 24 | 
1 files changed, 17 insertions, 7 deletions
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h index 6dbc645f1f3..ccc264e7bde 100644 --- a/fs/btrfs/extent_io.h +++ b/fs/btrfs/extent_io.h @@ -43,6 +43,7 @@  #define EXTENT_BUFFER_WRITEBACK 7  #define EXTENT_BUFFER_IOERR 8  #define EXTENT_BUFFER_DUMMY 9 +#define EXTENT_BUFFER_IN_TREE 10  /* these are flags for extent_clear_unlock_delalloc */  #define PAGE_UNLOCK		(1 << 0) @@ -94,12 +95,10 @@ struct extent_io_ops {  struct extent_io_tree {  	struct rb_root state; -	struct radix_tree_root buffer;  	struct address_space *mapping;  	u64 dirty_bytes;  	int track_uptodate;  	spinlock_t lock; -	spinlock_t buffer_lock;  	struct extent_io_ops *ops;  }; @@ -130,7 +129,7 @@ struct extent_buffer {  	unsigned long map_start;  	unsigned long map_len;  	unsigned long bflags; -	struct extent_io_tree *tree; +	struct btrfs_fs_info *fs_info;  	spinlock_t refs_lock;  	atomic_t refs;  	atomic_t io_pages; @@ -159,7 +158,6 @@ struct extent_buffer {  	 * to unlock  	 */  	wait_queue_head_t read_lock_wq; -	wait_queue_head_t lock_wq;  	struct page *pages[INLINE_EXTENT_BUFFER_PAGES];  #ifdef CONFIG_BTRFS_DEBUG  	struct list_head leak_list; @@ -266,12 +264,12 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,  int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private);  void set_page_extent_mapped(struct page *page); -struct extent_buffer *alloc_extent_buffer(struct extent_io_tree *tree, +struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info,  					  u64 start, unsigned long len);  struct extent_buffer *alloc_dummy_extent_buffer(u64 start, unsigned long len);  struct extent_buffer *btrfs_clone_extent_buffer(struct extent_buffer *src); -struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree, -					 u64 start, unsigned long len); +struct extent_buffer *find_extent_buffer(struct btrfs_fs_info *fs_info, +					 u64 start);  void free_extent_buffer(struct extent_buffer *eb);  void free_extent_buffer_stale(struct extent_buffer *eb);  #define WAIT_NONE	0 @@ -305,6 +303,9 @@ int memcmp_extent_buffer(struct extent_buffer *eb, const void *ptrv,  void read_extent_buffer(struct extent_buffer *eb, void *dst,  			unsigned long start,  			unsigned long len); +int read_extent_buffer_to_user(struct extent_buffer *eb, void __user *dst, +			       unsigned long start, +			       unsigned long len);  void write_extent_buffer(struct extent_buffer *eb, const void *src,  			 unsigned long start, unsigned long len);  void copy_extent_buffer(struct extent_buffer *dst, struct extent_buffer *src, @@ -321,6 +322,7 @@ int set_extent_buffer_dirty(struct extent_buffer *eb);  int set_extent_buffer_uptodate(struct extent_buffer *eb);  int clear_extent_buffer_uptodate(struct extent_buffer *eb);  int extent_buffer_uptodate(struct extent_buffer *eb); +int extent_buffer_under_io(struct extent_buffer *eb);  int map_private_extent_buffer(struct extent_buffer *eb, unsigned long offset,  		      unsigned long min_len, char **map,  		      unsigned long *map_start, @@ -345,4 +347,12 @@ int repair_io_failure(struct btrfs_fs_info *fs_info, u64 start,  int end_extent_writepage(struct page *page, int err, u64 start, u64 end);  int repair_eb_io_failure(struct btrfs_root *root, struct extent_buffer *eb,  			 int mirror_num); +#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS +noinline u64 find_lock_delalloc_range(struct inode *inode, +				      struct extent_io_tree *tree, +				      struct page *locked_page, u64 *start, +				      u64 *end, u64 max_bytes); +struct extent_buffer *alloc_test_extent_buffer(struct btrfs_fs_info *fs_info, +					       u64 start, unsigned long len); +#endif  #endif  | 
