diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2015-09-08 11:08:36 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-10-22 03:37:46 +0200 |
commit | f64d5ca868214f9beb60108c82fcb96940132bfb (patch) | |
tree | 21676bd140d5b755f24663839f10e2c04c878e3e /fs/btrfs/delayed-ref.h | |
parent | btrfs: qgroup: Introduce functions to release/free qgroup reserve data (diff) | |
download | linux-f64d5ca868214f9beb60108c82fcb96940132bfb.tar.xz linux-f64d5ca868214f9beb60108c82fcb96940132bfb.zip |
btrfs: delayed_ref: Add new function to record reserved space into delayed ref
Add new function btrfs_add_delayed_qgroup_reserve() function to record
how much space is reserved for that extent.
As btrfs only accounts qgroup at run_delayed_refs() time, so newly
allocated extent should keep the reserved space until then.
So add needed function with related members to do it.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to '')
-rw-r--r-- | fs/btrfs/delayed-ref.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/btrfs/delayed-ref.h b/fs/btrfs/delayed-ref.h index 13fb5e6090fe..d4c41e26101c 100644 --- a/fs/btrfs/delayed-ref.h +++ b/fs/btrfs/delayed-ref.h @@ -113,6 +113,17 @@ struct btrfs_delayed_ref_head { int total_ref_mod; /* + * For qgroup reserved space freeing. + * + * ref_root and reserved will be recorded after + * BTRFS_ADD_DELAYED_EXTENT is called. + * And will be used to free reserved qgroup space at + * run_delayed_refs() time. + */ + u64 qgroup_ref_root; + u64 qgroup_reserved; + + /* * when a new extent is allocated, it is just reserved in memory * The actual extent isn't inserted into the extent allocation tree * until the delayed ref is processed. must_insert_reserved is @@ -242,6 +253,9 @@ int btrfs_add_delayed_data_ref(struct btrfs_fs_info *fs_info, u64 owner, u64 offset, int action, struct btrfs_delayed_extent_op *extent_op, int no_quota); +int btrfs_add_delayed_qgroup_reserve(struct btrfs_fs_info *fs_info, + struct btrfs_trans_handle *trans, + u64 ref_root, u64 bytenr, u64 num_bytes); int btrfs_add_delayed_extent_op(struct btrfs_fs_info *fs_info, struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, |