diff mbox series

[6/6] btrfs: open code csum_exist_in_range()

Message ID 43c7b46211cc26f0f47ccd8bca522d70e4e563b8.1712933006.git.fdmanana@suse.com (mailing list archive)
State New
Headers show
Series btrfs: some speedup for NOCOW write path and cleanups | expand

Commit Message

Filipe Manana April 12, 2024, 3:03 p.m. UTC
From: Filipe Manana <fdmanana@suse.com>

The csum_exist_in_range() function is now too trivial and is only used in
one place, so open code it in its single caller.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/inode.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

Comments

Qu Wenruo April 13, 2024, 10:16 a.m. UTC | #1
在 2024/4/13 00:33, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> The csum_exist_in_range() function is now too trivial and is only used in
> one place, so open code it in its single caller.
>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>

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

Thanks,
Qu
> ---
>   fs/btrfs/inode.c | 19 +++++++------------
>   1 file changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 1d78e07d082b..f23511428e74 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -1737,15 +1737,6 @@ static noinline int run_delalloc_cow(struct btrfs_inode *inode,
>   	return 1;
>   }
>
> -static noinline int csum_exist_in_range(struct btrfs_fs_info *fs_info,
> -					u64 bytenr, u64 num_bytes, bool nowait)
> -{
> -	struct btrfs_root *csum_root = btrfs_csum_root(fs_info, bytenr);
> -
> -	return btrfs_lookup_csums_list(csum_root, bytenr, bytenr + num_bytes - 1,
> -				       NULL, nowait);
> -}
> -
>   static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page,
>   			   const u64 start, const u64 end)
>   {
> @@ -1860,6 +1851,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
>   	struct extent_buffer *leaf = path->nodes[0];
>   	struct btrfs_root *root = inode->root;
>   	struct btrfs_file_extent_item *fi;
> +	struct btrfs_root *csum_root;
>   	u64 extent_end;
>   	u8 extent_type;
>   	int can_nocow = 0;
> @@ -1920,7 +1912,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
>   	if (args->free_path) {
>   		/*
>   		 * We don't need the path anymore, plus through the
> -		 * csum_exist_in_range() call below we will end up allocating
> +		 * btrfs_lookup_csums_list() call below we will end up allocating
>   		 * another path. So free the path to avoid unnecessary extra
>   		 * memory usage.
>   		 */
> @@ -1941,8 +1933,11 @@ static int can_nocow_file_extent(struct btrfs_path *path,
>   	 * Force COW if csums exist in the range. This ensures that csums for a
>   	 * given extent are either valid or do not exist.
>   	 */
> -	ret = csum_exist_in_range(root->fs_info, args->disk_bytenr, args->num_bytes,
> -				  nowait);
> +
> +	csum_root = btrfs_csum_root(root->fs_info, args->disk_bytenr);
> +	ret = btrfs_lookup_csums_list(csum_root, args->disk_bytenr,
> +				      args->disk_bytenr + args->num_bytes - 1,
> +				      NULL, nowait);
>   	WARN_ON_ONCE(ret > 0 && is_freespace_inode);
>   	if (ret != 0)
>   		goto out;
diff mbox series

Patch

diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 1d78e07d082b..f23511428e74 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1737,15 +1737,6 @@  static noinline int run_delalloc_cow(struct btrfs_inode *inode,
 	return 1;
 }
 
-static noinline int csum_exist_in_range(struct btrfs_fs_info *fs_info,
-					u64 bytenr, u64 num_bytes, bool nowait)
-{
-	struct btrfs_root *csum_root = btrfs_csum_root(fs_info, bytenr);
-
-	return btrfs_lookup_csums_list(csum_root, bytenr, bytenr + num_bytes - 1,
-				       NULL, nowait);
-}
-
 static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page,
 			   const u64 start, const u64 end)
 {
@@ -1860,6 +1851,7 @@  static int can_nocow_file_extent(struct btrfs_path *path,
 	struct extent_buffer *leaf = path->nodes[0];
 	struct btrfs_root *root = inode->root;
 	struct btrfs_file_extent_item *fi;
+	struct btrfs_root *csum_root;
 	u64 extent_end;
 	u8 extent_type;
 	int can_nocow = 0;
@@ -1920,7 +1912,7 @@  static int can_nocow_file_extent(struct btrfs_path *path,
 	if (args->free_path) {
 		/*
 		 * We don't need the path anymore, plus through the
-		 * csum_exist_in_range() call below we will end up allocating
+		 * btrfs_lookup_csums_list() call below we will end up allocating
 		 * another path. So free the path to avoid unnecessary extra
 		 * memory usage.
 		 */
@@ -1941,8 +1933,11 @@  static int can_nocow_file_extent(struct btrfs_path *path,
 	 * Force COW if csums exist in the range. This ensures that csums for a
 	 * given extent are either valid or do not exist.
 	 */
-	ret = csum_exist_in_range(root->fs_info, args->disk_bytenr, args->num_bytes,
-				  nowait);
+
+	csum_root = btrfs_csum_root(root->fs_info, args->disk_bytenr);
+	ret = btrfs_lookup_csums_list(csum_root, args->disk_bytenr,
+				      args->disk_bytenr + args->num_bytes - 1,
+				      NULL, nowait);
 	WARN_ON_ONCE(ret > 0 && is_freespace_inode);
 	if (ret != 0)
 		goto out;