diff options
Diffstat (limited to 'fs/btrfs/backref.h')
| -rw-r--r-- | fs/btrfs/backref.h | 20 | 
1 files changed, 18 insertions, 2 deletions
diff --git a/fs/btrfs/backref.h b/fs/btrfs/backref.h index 2759de7d324c..52ae6957b414 100644 --- a/fs/btrfs/backref.h +++ b/fs/btrfs/backref.h @@ -17,6 +17,20 @@ struct inode_fs_paths {  	struct btrfs_data_container	*fspath;  }; +struct btrfs_backref_shared_cache_entry { +	u64 bytenr; +	u64 gen; +	bool is_shared; +}; + +struct btrfs_backref_shared_cache { +	/* +	 * A path from a root to a leaf that has a file extent item pointing to +	 * a given data extent should never exceed the maximum b+tree height. +	 */ +	struct btrfs_backref_shared_cache_entry entries[BTRFS_MAX_LEVEL]; +}; +  typedef int (iterate_extent_inodes_t)(u64 inum, u64 offset, u64 root,  		void *ctx); @@ -62,8 +76,10 @@ int btrfs_find_one_extref(struct btrfs_root *root, u64 inode_objectid,  			  u64 start_off, struct btrfs_path *path,  			  struct btrfs_inode_extref **ret_extref,  			  u64 *found_off); -int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr, -		struct ulist *roots, struct ulist *tmp_ulist); +int btrfs_is_data_extent_shared(struct btrfs_root *root, u64 inum, u64 bytenr, +				u64 extent_gen, +				struct ulist *roots, struct ulist *tmp, +				struct btrfs_backref_shared_cache *cache);  int __init btrfs_prelim_ref_init(void);  void __cold btrfs_prelim_ref_exit(void);  |