diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2013-02-28 05:04:33 -0500 |
---|---|---|
committer | Josef Bacik <jbacik@fusionio.com> | 2013-02-28 13:33:54 -0500 |
commit | d5c1207017cd8387b4d3224dd7ab6cf5cd7f1c9a (patch) | |
tree | 7208d1c89aa625fa6eb349fdafa2e49a00bbe078 /fs/btrfs/ctree.h | |
parent | e9662f701c85ebc99f532bf8bb53208c0648846a (diff) |
Btrfs: fix wrong reserved space in qgroup during snap/subv creation
There are two problems in the space reservation of the snapshot/
subvolume creation.
- don't reserve the space for the root item insertion
- the space which is reserved in the qgroup is different with
the free space reservation. we need reserve free space for
7 items, but in qgroup reservation, we need reserve space only
for 3 items.
So we implement new metadata reservation functions for the
snapshot/subvolume creation.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index ae8dcc406805..0d82922179db 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -3106,8 +3106,13 @@ void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans, | |||
3106 | int btrfs_orphan_reserve_metadata(struct btrfs_trans_handle *trans, | 3106 | int btrfs_orphan_reserve_metadata(struct btrfs_trans_handle *trans, |
3107 | struct inode *inode); | 3107 | struct inode *inode); |
3108 | void btrfs_orphan_release_metadata(struct inode *inode); | 3108 | void btrfs_orphan_release_metadata(struct inode *inode); |
3109 | int btrfs_snap_reserve_metadata(struct btrfs_trans_handle *trans, | 3109 | int btrfs_subvolume_reserve_metadata(struct btrfs_root *root, |
3110 | struct btrfs_pending_snapshot *pending); | 3110 | struct btrfs_block_rsv *rsv, |
3111 | int nitems, | ||
3112 | u64 *qgroup_reserved); | ||
3113 | void btrfs_subvolume_release_metadata(struct btrfs_root *root, | ||
3114 | struct btrfs_block_rsv *rsv, | ||
3115 | u64 qgroup_reserved); | ||
3111 | int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); | 3116 | int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); |
3112 | void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); | 3117 | void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); |
3113 | int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); | 3118 | int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); |