[PATCH 18/19] btrfs: qgroup: Cleanup old inaccurate facilities
Cleanup the old facilities which use old btrfs_qgroup_reserve() function call, replace them with the newer version, and remove the "__" prefix in them. Also, make btrfs_qgroup_reserve/free() functions private, as they are now only used inside qgroup codes. Now, the whole btrfs qgroup is swithed to use the new reserve facilities. Signed-off-by: Qu Wenruo --- fs/btrfs/ctree.h | 6 ++ fs/btrfs/extent-tree.c | 56 -- fs/btrfs/file.c| 2 +- fs/btrfs/inode-map.c | 2 +- fs/btrfs/inode.c | 12 +-- fs/btrfs/ioctl.c | 2 +- fs/btrfs/qgroup.c | 19 ++--- fs/btrfs/qgroup.h | 7 --- 8 files changed, 27 insertions(+), 79 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 12f14fd..8489419 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -3452,8 +3452,7 @@ enum btrfs_reserve_flush_enum { BTRFS_RESERVE_FLUSH_ALL, }; -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 write_bytes); -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); int btrfs_alloc_data_chunk_ondemand(struct inode *inode, u64 bytes); void btrfs_free_reserved_data_space(struct inode *inode, u64 bytes); void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans, @@ -3471,8 +3470,7 @@ void btrfs_subvolume_release_metadata(struct btrfs_root *root, u64 qgroup_reserved); int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); -int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); void btrfs_delalloc_release_space(struct inode *inode, u64 num_bytes); void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type); struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root, diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 07f45b7..ab1b1a1 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -3352,7 +3352,7 @@ again: num_pages *= 16; num_pages *= PAGE_CACHE_SIZE; - ret = __btrfs_check_data_free_space(inode, 0, num_pages); + ret = btrfs_check_data_free_space(inode, 0, num_pages); if (ret) goto out_put; @@ -4037,27 +4037,11 @@ commit_trans: } /* - * This will check the space that the inode allocates from to make sure we have - * enough space for bytes. - */ -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 write_bytes) -{ - struct btrfs_root *root = BTRFS_I(inode)->root; - int ret; - - ret = btrfs_alloc_data_chunk_ondemand(inode, bytes); - if (ret < 0) - return ret; - ret = btrfs_qgroup_reserve(root, write_bytes); - return ret; -} - -/* * New check_data_free_space() with ability for precious data reserveation * Will replace old btrfs_check_data_free_space(), but for patch split, * add a new function first and then replace it. */ -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) { struct btrfs_root *root = BTRFS_I(inode)->root; int ret; @@ -5710,11 +5694,11 @@ void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes) * Return 0 for success * Return <0 for error(-ENOSPC or -EQUOT) */ -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) { int ret; - ret = __btrfs_check_data_free_space(inode, start, len); + ret = btrfs_check_data_free_space(inode, start, len); if (ret < 0) return ret; ret = btrfs_delalloc_reserve_metadata(inode, len); @@ -5724,38 +5708,6 @@ int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) } /** - * btrfs_delalloc_reserve_space - reserve data and metadata space for delalloc - * @inode: inode we're writing to - * @num_bytes: the number of bytes we want to allocate - * - * This will do the following things - * - * o reserve space in the data space info for num_bytes - * o reserve space in the metadata space info based on number of outstanding - * extents and how much csums will be needed - * o add to the inodes ->delalloc_bytes - * o add it to the fs_info's delalloc inodes list. - * - * This will return 0 for success and -ENOSPC if there is no space left. - */ -int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes) -{ - int ret; - - ret = btrfs_check_data_free_space(inode, num_bytes, num_bytes); - if (ret) - return ret
Re: [PATCH 18/19] btrfs: qgroup: Cleanup old inaccurate facilities
Hi, Qu, On 2015/09/08 18:25, Qu Wenruo wrote: > Cleanup the old facilities which use old btrfs_qgroup_reserve() function > call, replace them with the newer version, and remove the "__" prefix in > them. > > Also, make btrfs_qgroup_reserve/free() functions private, as they are > now only used inside qgroup codes. > > Now, the whole btrfs qgroup is swithed to use the new reserve facilities. > > Signed-off-by: Qu Wenruo > --- > fs/btrfs/ctree.h | 6 ++ > fs/btrfs/extent-tree.c | 56 > -- > fs/btrfs/file.c| 2 +- > fs/btrfs/inode-map.c | 2 +- > fs/btrfs/inode.c | 12 +-- > fs/btrfs/ioctl.c | 2 +- > fs/btrfs/qgroup.c | 19 ++--- > fs/btrfs/qgroup.h | 7 --- > 8 files changed, 27 insertions(+), 79 deletions(-) > > diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h > index 12f14fd..8489419 100644 > --- a/fs/btrfs/ctree.h > +++ b/fs/btrfs/ctree.h > @@ -3452,8 +3452,7 @@ enum btrfs_reserve_flush_enum { > BTRFS_RESERVE_FLUSH_ALL, > }; > > -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 > write_bytes); > -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); > +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); > int btrfs_alloc_data_chunk_ondemand(struct inode *inode, u64 bytes); > void btrfs_free_reserved_data_space(struct inode *inode, u64 bytes); > void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans, > @@ -3471,8 +3470,7 @@ void btrfs_subvolume_release_metadata(struct btrfs_root > *root, > u64 qgroup_reserved); > int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); > void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); > -int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); > -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); > +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); > void btrfs_delalloc_release_space(struct inode *inode, u64 num_bytes); > void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type); > struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root, > diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c > index 07f45b7..ab1b1a1 100644 > --- a/fs/btrfs/extent-tree.c > +++ b/fs/btrfs/extent-tree.c > @@ -3352,7 +3352,7 @@ again: > num_pages *= 16; > num_pages *= PAGE_CACHE_SIZE; > > - ret = __btrfs_check_data_free_space(inode, 0, num_pages); > + ret = btrfs_check_data_free_space(inode, 0, num_pages); > if (ret) > goto out_put; > > @@ -4037,27 +4037,11 @@ commit_trans: > } > > /* > - * This will check the space that the inode allocates from to make sure we > have > - * enough space for bytes. > - */ > -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 > write_bytes) > -{ > - struct btrfs_root *root = BTRFS_I(inode)->root; > - int ret; > - > - ret = btrfs_alloc_data_chunk_ondemand(inode, bytes); > - if (ret < 0) > - return ret; > - ret = btrfs_qgroup_reserve(root, write_bytes); > - return ret; > -} > - > -/* >* New check_data_free_space() with ability for precious data reserveation >* Will replace old btrfs_check_data_free_space(), but for patch split, >* add a new function first and then replace it. >*/ > -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) > +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) > { > struct btrfs_root *root = BTRFS_I(inode)->root; > int ret; > @@ -5710,11 +5694,11 @@ void btrfs_delalloc_release_metadata(struct inode > *inode, u64 num_bytes) >* Return 0 for success >* Return <0 for error(-ENOSPC or -EQUOT) >*/ > -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) > +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) > { > int ret; > > - ret = __btrfs_check_data_free_space(inode, start, len); > + ret = btrfs_check_data_free_space(inode, start, len); > if (ret < 0) > return ret; > ret = btrfs_delalloc_reserve_metadata(inode, len); > @@ -5724,38 +5708,6 @@ int __btrfs_delalloc_reserve_space(struct inode > *inode, u64 start, u64 len) > } > > /** > - * btrfs_delalloc_reserve_space - reserve data and metadata space for > delalloc > - * @inode: inode we're writing to > - * @num_bytes: the number of bytes we want to allocate > - * > - * This will do the following things > - * > - * o reserve space in the data space info for num_bytes > - * o reserve space in the metadata space info based on number of outstanding > - * extents and how much csums will be needed > - * o add to the inodes ->delalloc_bytes > - * o add it to the fs_info's delalloc inodes list. >
[PATCH 18/19] btrfs: qgroup: Cleanup old inaccurate facilities
Cleanup the old facilities which use old btrfs_qgroup_reserve() function call, replace them with the newer version, and remove the "__" prefix in them. Also, make btrfs_qgroup_reserve/free() functions private, as they are now only used inside qgroup codes. Now, the whole btrfs qgroup is swithed to use the new reserve facilities. Signed-off-by: Qu Wenruo --- fs/btrfs/ctree.h | 6 ++ fs/btrfs/extent-tree.c | 56 -- fs/btrfs/file.c| 2 +- fs/btrfs/inode-map.c | 2 +- fs/btrfs/inode.c | 12 +-- fs/btrfs/ioctl.c | 2 +- fs/btrfs/qgroup.c | 19 ++--- fs/btrfs/qgroup.h | 7 --- 8 files changed, 27 insertions(+), 79 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 12f14fd..8489419 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -3452,8 +3452,7 @@ enum btrfs_reserve_flush_enum { BTRFS_RESERVE_FLUSH_ALL, }; -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 write_bytes); -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len); int btrfs_alloc_data_chunk_ondemand(struct inode *inode, u64 bytes); void btrfs_free_reserved_data_space(struct inode *inode, u64 bytes); void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans, @@ -3471,8 +3470,7 @@ void btrfs_subvolume_release_metadata(struct btrfs_root *root, u64 qgroup_reserved); int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); -int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len); void btrfs_delalloc_release_space(struct inode *inode, u64 num_bytes); void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv, unsigned short type); struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root, diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 07f45b7..ab1b1a1 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -3352,7 +3352,7 @@ again: num_pages *= 16; num_pages *= PAGE_CACHE_SIZE; - ret = __btrfs_check_data_free_space(inode, 0, num_pages); + ret = btrfs_check_data_free_space(inode, 0, num_pages); if (ret) goto out_put; @@ -4037,27 +4037,11 @@ commit_trans: } /* - * This will check the space that the inode allocates from to make sure we have - * enough space for bytes. - */ -int btrfs_check_data_free_space(struct inode *inode, u64 bytes, u64 write_bytes) -{ - struct btrfs_root *root = BTRFS_I(inode)->root; - int ret; - - ret = btrfs_alloc_data_chunk_ondemand(inode, bytes); - if (ret < 0) - return ret; - ret = btrfs_qgroup_reserve(root, write_bytes); - return ret; -} - -/* * New check_data_free_space() with ability for precious data reserveation * Will replace old btrfs_check_data_free_space(), but for patch split, * add a new function first and then replace it. */ -int __btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) +int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) { struct btrfs_root *root = BTRFS_I(inode)->root; int ret; @@ -5710,11 +5694,11 @@ void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes) * Return 0 for success * Return <0 for error(-ENOSPC or -EQUOT) */ -int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) +int btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) { int ret; - ret = __btrfs_check_data_free_space(inode, start, len); + ret = btrfs_check_data_free_space(inode, start, len); if (ret < 0) return ret; ret = btrfs_delalloc_reserve_metadata(inode, len); @@ -5724,38 +5708,6 @@ int __btrfs_delalloc_reserve_space(struct inode *inode, u64 start, u64 len) } /** - * btrfs_delalloc_reserve_space - reserve data and metadata space for delalloc - * @inode: inode we're writing to - * @num_bytes: the number of bytes we want to allocate - * - * This will do the following things - * - * o reserve space in the data space info for num_bytes - * o reserve space in the metadata space info based on number of outstanding - * extents and how much csums will be needed - * o add to the inodes ->delalloc_bytes - * o add it to the fs_info's delalloc inodes list. - * - * This will return 0 for success and -ENOSPC if there is no space left. - */ -int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes) -{ - int ret; - - ret = btrfs_check_data_free_space(inode, num_bytes, num_bytes); - if (ret) - return ret