diff mbox series

[02/10] btrfs: replace div_u64 by shift in free_space_bitmap_size

Message ID 8eeec6dd99180d96b96168d24fc4205c0ed48f36.1603981453.git.dsterba@suse.com (mailing list archive)
State New, archived
Headers show
Series Sectorsize, csum_size lifted to fs_info | expand

Commit Message

David Sterba Oct. 29, 2020, 2:27 p.m. UTC
Change free_space_bitmap_size to take btrfs_fs_info so we can get the
sectorsize_bits to do calculations.

Signed-off-by: David Sterba <dsterba@suse.com>
---
 fs/btrfs/free-space-tree.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

Comments

Qu Wenruo Nov. 2, 2020, 2:07 p.m. UTC | #1
On 2020/10/29 下午10:27, David Sterba wrote:
> Change free_space_bitmap_size to take btrfs_fs_info so we can get the
> sectorsize_bits to do calculations.
> 
> Signed-off-by: David Sterba <dsterba@suse.com>

Reviewed-by: Qu Wenruo <wqu@suse.com>

Thanks,
Qu
> ---
>  fs/btrfs/free-space-tree.c | 18 ++++++++----------
>  1 file changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/btrfs/free-space-tree.c b/fs/btrfs/free-space-tree.c
> index f09f62e245a0..0f6a2ee6f235 100644
> --- a/fs/btrfs/free-space-tree.c
> +++ b/fs/btrfs/free-space-tree.c
> @@ -136,9 +136,10 @@ static int btrfs_search_prev_slot(struct btrfs_trans_handle *trans,
>  	return 0;
>  }
>  
> -static inline u32 free_space_bitmap_size(u64 size, u32 sectorsize)
> +static inline u32 free_space_bitmap_size(const struct btrfs_fs_info *fs_info,
> +					 u64 size)
>  {
> -	return DIV_ROUND_UP((u32)div_u64(size, sectorsize), BITS_PER_BYTE);
> +	return DIV_ROUND_UP(size >> fs_info->sectorsize_bits, BITS_PER_BYTE);
>  }
>  
>  static unsigned long *alloc_bitmap(u32 bitmap_size)
> @@ -200,8 +201,7 @@ int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
>  	int done = 0, nr;
>  	int ret;
>  
> -	bitmap_size = free_space_bitmap_size(block_group->length,
> -					     fs_info->sectorsize);
> +	bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
>  	bitmap = alloc_bitmap(bitmap_size);
>  	if (!bitmap) {
>  		ret = -ENOMEM;
> @@ -290,8 +290,7 @@ int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
>  		u32 data_size;
>  
>  		extent_size = min(end - i, bitmap_range);
> -		data_size = free_space_bitmap_size(extent_size,
> -						   fs_info->sectorsize);
> +		data_size = free_space_bitmap_size(fs_info, extent_size);
>  
>  		key.objectid = i;
>  		key.type = BTRFS_FREE_SPACE_BITMAP_KEY;
> @@ -339,8 +338,7 @@ int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
>  	int done = 0, nr;
>  	int ret;
>  
> -	bitmap_size = free_space_bitmap_size(block_group->length,
> -					     fs_info->sectorsize);
> +	bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
>  	bitmap = alloc_bitmap(bitmap_size);
>  	if (!bitmap) {
>  		ret = -ENOMEM;
> @@ -383,8 +381,8 @@ int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
>  						     fs_info->sectorsize *
>  						     BITS_PER_BYTE);
>  				bitmap_cursor = ((char *)bitmap) + bitmap_pos;
> -				data_size = free_space_bitmap_size(found_key.offset,
> -								   fs_info->sectorsize);
> +				data_size = free_space_bitmap_size(fs_info,
> +								found_key.offset);
>  
>  				ptr = btrfs_item_ptr_offset(leaf, path->slots[0] - 1);
>  				read_extent_buffer(leaf, bitmap_cursor, ptr,
>
diff mbox series

Patch

diff --git a/fs/btrfs/free-space-tree.c b/fs/btrfs/free-space-tree.c
index f09f62e245a0..0f6a2ee6f235 100644
--- a/fs/btrfs/free-space-tree.c
+++ b/fs/btrfs/free-space-tree.c
@@ -136,9 +136,10 @@  static int btrfs_search_prev_slot(struct btrfs_trans_handle *trans,
 	return 0;
 }
 
-static inline u32 free_space_bitmap_size(u64 size, u32 sectorsize)
+static inline u32 free_space_bitmap_size(const struct btrfs_fs_info *fs_info,
+					 u64 size)
 {
-	return DIV_ROUND_UP((u32)div_u64(size, sectorsize), BITS_PER_BYTE);
+	return DIV_ROUND_UP(size >> fs_info->sectorsize_bits, BITS_PER_BYTE);
 }
 
 static unsigned long *alloc_bitmap(u32 bitmap_size)
@@ -200,8 +201,7 @@  int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
 	int done = 0, nr;
 	int ret;
 
-	bitmap_size = free_space_bitmap_size(block_group->length,
-					     fs_info->sectorsize);
+	bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
 	bitmap = alloc_bitmap(bitmap_size);
 	if (!bitmap) {
 		ret = -ENOMEM;
@@ -290,8 +290,7 @@  int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
 		u32 data_size;
 
 		extent_size = min(end - i, bitmap_range);
-		data_size = free_space_bitmap_size(extent_size,
-						   fs_info->sectorsize);
+		data_size = free_space_bitmap_size(fs_info, extent_size);
 
 		key.objectid = i;
 		key.type = BTRFS_FREE_SPACE_BITMAP_KEY;
@@ -339,8 +338,7 @@  int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
 	int done = 0, nr;
 	int ret;
 
-	bitmap_size = free_space_bitmap_size(block_group->length,
-					     fs_info->sectorsize);
+	bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
 	bitmap = alloc_bitmap(bitmap_size);
 	if (!bitmap) {
 		ret = -ENOMEM;
@@ -383,8 +381,8 @@  int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
 						     fs_info->sectorsize *
 						     BITS_PER_BYTE);
 				bitmap_cursor = ((char *)bitmap) + bitmap_pos;
-				data_size = free_space_bitmap_size(found_key.offset,
-								   fs_info->sectorsize);
+				data_size = free_space_bitmap_size(fs_info,
+								found_key.offset);
 
 				ptr = btrfs_item_ptr_offset(leaf, path->slots[0] - 1);
 				read_extent_buffer(leaf, bitmap_cursor, ptr,