aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.h
diff options
context:
space:
mode:
authorArne Jansen <sensille@gmx.net>2012-06-28 12:03:02 -0400
committerJan Schmidt <list.btrfs@jan-o-sch.net>2012-07-12 04:54:21 -0400
commitbed92eae26ccf280d1a2168b7509447b56675a27 (patch)
tree4a852b27746dca2ab0b3646b7d7e050b93502bc5 /fs/btrfs/ctree.h
parent709c0486b9fe9586736b108b7233bbce0300cfa5 (diff)
Btrfs: qgroup implementation and prototypes
Signed-off-by: Arne Jansen <sensille@gmx.net> Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r--fs/btrfs/ctree.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index a5269d4a164f..ccba9b684c96 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2830,6 +2830,8 @@ int btrfs_force_chunk_alloc(struct btrfs_trans_handle *trans,
2830int btrfs_trim_fs(struct btrfs_root *root, struct fstrim_range *range); 2830int btrfs_trim_fs(struct btrfs_root *root, struct fstrim_range *range);
2831 2831
2832int btrfs_init_space_info(struct btrfs_fs_info *fs_info); 2832int btrfs_init_space_info(struct btrfs_fs_info *fs_info);
2833int btrfs_delayed_refs_qgroup_accounting(struct btrfs_trans_handle *trans,
2834 struct btrfs_fs_info *fs_info);
2833/* ctree.c */ 2835/* ctree.c */
2834int btrfs_bin_search(struct extent_buffer *eb, struct btrfs_key *key, 2836int btrfs_bin_search(struct extent_buffer *eb, struct btrfs_key *key,
2835 int level, int *slot); 2837 int level, int *slot);
@@ -3339,6 +3341,50 @@ void btrfs_reada_detach(void *handle);
3339int btree_readahead_hook(struct btrfs_root *root, struct extent_buffer *eb, 3341int btree_readahead_hook(struct btrfs_root *root, struct extent_buffer *eb,
3340 u64 start, int err); 3342 u64 start, int err);
3341 3343
3344/* qgroup.c */
3345struct qgroup_update {
3346 struct list_head list;
3347 struct btrfs_delayed_ref_node *node;
3348 struct btrfs_delayed_extent_op *extent_op;
3349};
3350
3351int btrfs_quota_enable(struct btrfs_trans_handle *trans,
3352 struct btrfs_fs_info *fs_info);
3353int btrfs_quota_disable(struct btrfs_trans_handle *trans,
3354 struct btrfs_fs_info *fs_info);
3355int btrfs_quota_rescan(struct btrfs_fs_info *fs_info);
3356int btrfs_add_qgroup_relation(struct btrfs_trans_handle *trans,
3357 struct btrfs_fs_info *fs_info, u64 src, u64 dst);
3358int btrfs_del_qgroup_relation(struct btrfs_trans_handle *trans,
3359 struct btrfs_fs_info *fs_info, u64 src, u64 dst);
3360int btrfs_create_qgroup(struct btrfs_trans_handle *trans,
3361 struct btrfs_fs_info *fs_info, u64 qgroupid,
3362 char *name);
3363int btrfs_remove_qgroup(struct btrfs_trans_handle *trans,
3364 struct btrfs_fs_info *fs_info, u64 qgroupid);
3365int btrfs_limit_qgroup(struct btrfs_trans_handle *trans,
3366 struct btrfs_fs_info *fs_info, u64 qgroupid,
3367 struct btrfs_qgroup_limit *limit);
3368int btrfs_read_qgroup_config(struct btrfs_fs_info *fs_info);
3369void btrfs_free_qgroup_config(struct btrfs_fs_info *fs_info);
3370struct btrfs_delayed_extent_op;
3371int btrfs_qgroup_record_ref(struct btrfs_trans_handle *trans,
3372 struct btrfs_delayed_ref_node *node,
3373 struct btrfs_delayed_extent_op *extent_op);
3374int btrfs_qgroup_account_ref(struct btrfs_trans_handle *trans,
3375 struct btrfs_fs_info *fs_info,
3376 struct btrfs_delayed_ref_node *node,
3377 struct btrfs_delayed_extent_op *extent_op);
3378int btrfs_run_qgroups(struct btrfs_trans_handle *trans,
3379 struct btrfs_fs_info *fs_info);
3380int btrfs_qgroup_inherit(struct btrfs_trans_handle *trans,
3381 struct btrfs_fs_info *fs_info, u64 srcid, u64 objectid,
3382 struct btrfs_qgroup_inherit *inherit);
3383int btrfs_qgroup_reserve(struct btrfs_root *root, u64 num_bytes);
3384void btrfs_qgroup_free(struct btrfs_root *root, u64 num_bytes);
3385
3386void assert_qgroups_uptodate(struct btrfs_trans_handle *trans);
3387
3342static inline int is_fstree(u64 rootid) 3388static inline int is_fstree(u64 rootid)
3343{ 3389{
3344 if (rootid == BTRFS_FS_TREE_OBJECTID || 3390 if (rootid == BTRFS_FS_TREE_OBJECTID ||