diff options
Diffstat (limited to 'fs/btrfs/ctree.h')
| -rw-r--r-- | fs/btrfs/ctree.h | 28 | 
1 files changed, 24 insertions, 4 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 746a9acd218..6ade48b227e 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -114,6 +114,10 @@ struct btrfs_ordered_sum;   */  #define BTRFS_DEV_ITEMS_OBJECTID 1ULL +#define BTRFS_BTREE_INODE_OBJECTID 1 + +#define BTRFS_EMPTY_SUBVOL_DIR_OBJECTID 2 +  /*   * we can actually store much bigger names, but lets not confuse the rest   * of linux @@ -792,6 +796,8 @@ struct btrfs_fs_info {  	/* the log root tree is a directory of all the other log roots */  	struct btrfs_root *log_root_tree; + +	spinlock_t fs_roots_radix_lock;  	struct radix_tree_root fs_roots_radix;  	/* block group cache stuff */ @@ -1011,6 +1017,8 @@ struct btrfs_root {  	u64 highest_objectid;  	int ref_cows;  	int track_dirty; +	int in_radix; +  	u64 defrag_trans_start;  	struct btrfs_key defrag_progress;  	struct btrfs_key defrag_max; @@ -2111,12 +2119,15 @@ int btrfs_drop_subtree(struct btrfs_trans_handle *trans,  			struct extent_buffer *parent);  /* root-item.c */  int btrfs_find_root_ref(struct btrfs_root *tree_root, -		   struct btrfs_path *path, -		   u64 root_id, u64 ref_id); +			struct btrfs_path *path, +			u64 root_id, u64 ref_id);  int btrfs_add_root_ref(struct btrfs_trans_handle *trans,  		       struct btrfs_root *tree_root, -		       u64 root_id, u8 type, u64 ref_id, -		       u64 dirid, u64 sequence, +		       u64 root_id, u64 ref_id, u64 dirid, u64 sequence, +		       const char *name, int name_len); +int btrfs_del_root_ref(struct btrfs_trans_handle *trans, +		       struct btrfs_root *tree_root, +		       u64 root_id, u64 ref_id, u64 dirid, u64 *sequence,  		       const char *name, int name_len);  int btrfs_del_root(struct btrfs_trans_handle *trans, struct btrfs_root *root,  		   struct btrfs_key *key); @@ -2149,6 +2160,10 @@ btrfs_lookup_dir_index_item(struct btrfs_trans_handle *trans,  			    struct btrfs_path *path, u64 dir,  			    u64 objectid, const char *name, int name_len,  			    int mod); +struct btrfs_dir_item * +btrfs_search_dir_index_item(struct btrfs_root *root, +			    struct btrfs_path *path, u64 dirid, +			    const char *name, int name_len);  struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_root *root,  			      struct btrfs_path *path,  			      const char *name, int name_len); @@ -2171,6 +2186,7 @@ int btrfs_insert_orphan_item(struct btrfs_trans_handle *trans,  			     struct btrfs_root *root, u64 offset);  int btrfs_del_orphan_item(struct btrfs_trans_handle *trans,  			  struct btrfs_root *root, u64 offset); +int btrfs_find_orphan_item(struct btrfs_root *root, u64 offset);  /* inode-map.c */  int btrfs_find_free_objectid(struct btrfs_trans_handle *trans, @@ -2243,6 +2259,10 @@ int btrfs_unlink_inode(struct btrfs_trans_handle *trans,  int btrfs_add_link(struct btrfs_trans_handle *trans,  		   struct inode *parent_inode, struct inode *inode,  		   const char *name, int name_len, int add_backref, u64 index); +int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, +			struct btrfs_root *root, +			struct inode *dir, u64 objectid, +			const char *name, int name_len);  int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans,  			       struct btrfs_root *root,  			       struct inode *inode, u64 new_size,  |