diff mbox series

[10/10] btrfs: make btrfs_split_bio work on struct btrfs_bio

Message ID 20230301134244.1378533-11-hch@lst.de (mailing list archive)
State New, archived
Headers show
Series [01/10] btrfs: remove unused members from struct btrfs_encoded_read_private | expand

Commit Message

Christoph Hellwig March 1, 2023, 1:42 p.m. UTC
btrfs_split_bio expects a btrfs_bio as argument and always allocates one.
Type both the orig_bio argument and the return value as struct btrfs_bio
to improve type safety.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/btrfs/bio.c | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

Comments

Johannes Thumshirn March 2, 2023, 2:25 p.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Qu Wenruo March 2, 2023, 11:32 p.m. UTC | #2
On 2023/3/1 21:42, Christoph Hellwig wrote:
> btrfs_split_bio expects a btrfs_bio as argument and always allocates one.
> Type both the orig_bio argument and the return value as struct btrfs_bio
> to improve type safety.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

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

Thanks,
Qu
> ---
>   fs/btrfs/bio.c | 27 ++++++++++++++-------------
>   1 file changed, 14 insertions(+), 13 deletions(-)
> 
> diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
> index 527081abca026f..cf09c6271edbee 100644
> --- a/fs/btrfs/bio.c
> +++ b/fs/btrfs/bio.c
> @@ -61,30 +61,31 @@ struct btrfs_bio *btrfs_bio_alloc(unsigned int nr_vecs, blk_opf_t opf,
>   	return bbio;
>   }
>   
> -static struct bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
> -				   struct bio *orig, u64 map_length,
> -				   bool use_append)
> +static struct btrfs_bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
> +					 struct btrfs_bio *orig_bbio,
> +					 u64 map_length, bool use_append)
>   {
> -	struct btrfs_bio *orig_bbio = btrfs_bio(orig);
> +	struct btrfs_bio *bbio;
>   	struct bio *bio;
>   
>   	if (use_append) {
>   		unsigned int nr_segs;
>   
> -		bio = bio_split_rw(orig, &fs_info->limits, &nr_segs,
> +		bio = bio_split_rw(&orig_bbio->bio, &fs_info->limits, &nr_segs,
>   				   &btrfs_clone_bioset, map_length);
>   	} else {
> -		bio = bio_split(orig, map_length >> SECTOR_SHIFT, GFP_NOFS,
> -				&btrfs_clone_bioset);
> +		bio = bio_split(&orig_bbio->bio, map_length >> SECTOR_SHIFT,
> +				GFP_NOFS, &btrfs_clone_bioset);
>   	}
> -	btrfs_bio_init(btrfs_bio(bio), orig_bbio->inode, NULL, orig_bbio);
> +	bbio = btrfs_bio(bio);
> +	btrfs_bio_init(bbio, orig_bbio->inode, NULL, orig_bbio);
>   
> -	btrfs_bio(bio)->file_offset = orig_bbio->file_offset;
> -	if (!(orig->bi_opf & REQ_BTRFS_ONE_ORDERED))
> +	bbio->file_offset = orig_bbio->file_offset;
> +	if (!(orig_bbio->bio.bi_opf & REQ_BTRFS_ONE_ORDERED))
>   		orig_bbio->file_offset += map_length;
>   
>   	atomic_inc(&orig_bbio->pending_ios);
> -	return bio;
> +	return bbio;
>   }
>   
>   static void btrfs_orig_write_end_io(struct bio *bio);
> @@ -633,8 +634,8 @@ static bool btrfs_submit_chunk(struct btrfs_bio *bbio, int mirror_num)
>   		map_length = min(map_length, fs_info->max_zone_append_size);
>   
>   	if (map_length < length) {
> -		bio = btrfs_split_bio(fs_info, bio, map_length, use_append);
> -		bbio = btrfs_bio(bio);
> +		bbio = btrfs_split_bio(fs_info, bbio, map_length, use_append);
> +		bio = &bbio->bio;
>   	}
>   
>   	/*
Anand Jain March 3, 2023, 11:13 p.m. UTC | #3
On 01/03/2023 21:42, Christoph Hellwig wrote:
> btrfs_split_bio expects a btrfs_bio as argument and always allocates one.
> Type both the orig_bio argument and the return value as struct btrfs_bio
> to improve type safety.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

Reviewed-by: Anand Jain <anand.jain@oracle.com>
diff mbox series

Patch

diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
index 527081abca026f..cf09c6271edbee 100644
--- a/fs/btrfs/bio.c
+++ b/fs/btrfs/bio.c
@@ -61,30 +61,31 @@  struct btrfs_bio *btrfs_bio_alloc(unsigned int nr_vecs, blk_opf_t opf,
 	return bbio;
 }
 
-static struct bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
-				   struct bio *orig, u64 map_length,
-				   bool use_append)
+static struct btrfs_bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
+					 struct btrfs_bio *orig_bbio,
+					 u64 map_length, bool use_append)
 {
-	struct btrfs_bio *orig_bbio = btrfs_bio(orig);
+	struct btrfs_bio *bbio;
 	struct bio *bio;
 
 	if (use_append) {
 		unsigned int nr_segs;
 
-		bio = bio_split_rw(orig, &fs_info->limits, &nr_segs,
+		bio = bio_split_rw(&orig_bbio->bio, &fs_info->limits, &nr_segs,
 				   &btrfs_clone_bioset, map_length);
 	} else {
-		bio = bio_split(orig, map_length >> SECTOR_SHIFT, GFP_NOFS,
-				&btrfs_clone_bioset);
+		bio = bio_split(&orig_bbio->bio, map_length >> SECTOR_SHIFT,
+				GFP_NOFS, &btrfs_clone_bioset);
 	}
-	btrfs_bio_init(btrfs_bio(bio), orig_bbio->inode, NULL, orig_bbio);
+	bbio = btrfs_bio(bio);
+	btrfs_bio_init(bbio, orig_bbio->inode, NULL, orig_bbio);
 
-	btrfs_bio(bio)->file_offset = orig_bbio->file_offset;
-	if (!(orig->bi_opf & REQ_BTRFS_ONE_ORDERED))
+	bbio->file_offset = orig_bbio->file_offset;
+	if (!(orig_bbio->bio.bi_opf & REQ_BTRFS_ONE_ORDERED))
 		orig_bbio->file_offset += map_length;
 
 	atomic_inc(&orig_bbio->pending_ios);
-	return bio;
+	return bbio;
 }
 
 static void btrfs_orig_write_end_io(struct bio *bio);
@@ -633,8 +634,8 @@  static bool btrfs_submit_chunk(struct btrfs_bio *bbio, int mirror_num)
 		map_length = min(map_length, fs_info->max_zone_append_size);
 
 	if (map_length < length) {
-		bio = btrfs_split_bio(fs_info, bio, map_length, use_append);
-		bbio = btrfs_bio(bio);
+		bbio = btrfs_split_bio(fs_info, bbio, map_length, use_append);
+		bio = &bbio->bio;
 	}
 
 	/*