diff mbox series

[06/10] btrfs: store a pointer to the original btrfs_bio in struct compressed_bio

Message ID 20230301134244.1378533-7-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
The original bio must be a btrfs_bio, so store a pointer to the
btrfs_bio for better type checking.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/btrfs/compression.c | 15 ++++++++-------
 fs/btrfs/compression.h |  2 +-
 2 files changed, 9 insertions(+), 8 deletions(-)

Comments

Johannes Thumshirn March 2, 2023, 1:01 p.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Qu Wenruo March 2, 2023, 11:28 p.m. UTC | #2
On 2023/3/1 21:42, Christoph Hellwig wrote:
> The original bio must be a btrfs_bio, so store a pointer to the
> btrfs_bio for better type checking.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>

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

Thanks,
Qu
> ---
>   fs/btrfs/compression.c | 15 ++++++++-------
>   fs/btrfs/compression.h |  2 +-
>   2 files changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index c12e317e133624..c5839d04690d67 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -177,7 +177,7 @@ static void end_compressed_bio_read(struct btrfs_bio *bbio)
>   		status = errno_to_blk_status(btrfs_decompress_bio(cb));
>   
>   	btrfs_free_compressed_pages(cb);
> -	btrfs_bio_end_io(btrfs_bio(cb->orig_bio), status);
> +	btrfs_bio_end_io(cb->orig_bbio, status);
>   	bio_put(&bbio->bio);
>   }
>   
> @@ -357,7 +357,8 @@ static noinline int add_ra_bio_pages(struct inode *inode,
>   {
>   	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
>   	unsigned long end_index;
> -	u64 cur = btrfs_bio(cb->orig_bio)->file_offset + cb->orig_bio->bi_iter.bi_size;
> +	struct bio *orig_bio = &cb->orig_bbio->bio;
> +	u64 cur = cb->orig_bbio->file_offset + orig_bio->bi_iter.bi_size;
>   	u64 isize = i_size_read(inode);
>   	int ret;
>   	struct page *page;
> @@ -447,7 +448,7 @@ static noinline int add_ra_bio_pages(struct inode *inode,
>   		 */
>   		if (!em || cur < em->start ||
>   		    (cur + fs_info->sectorsize > extent_map_end(em)) ||
> -		    (em->block_start >> 9) != cb->orig_bio->bi_iter.bi_sector) {
> +		    (em->block_start >> 9) != orig_bio->bi_iter.bi_sector) {
>   			free_extent_map(em);
>   			unlock_extent(tree, cur, page_end, NULL);
>   			unlock_page(page);
> @@ -467,7 +468,7 @@ static noinline int add_ra_bio_pages(struct inode *inode,
>   		}
>   
>   		add_size = min(em->start + em->len, page_end + 1) - cur;
> -		ret = bio_add_page(cb->orig_bio, page, add_size, offset_in_page(cur));
> +		ret = bio_add_page(orig_bio, page, add_size, offset_in_page(cur));
>   		if (ret != add_size) {
>   			unlock_extent(tree, cur, page_end, NULL);
>   			unlock_page(page);
> @@ -537,7 +538,7 @@ void btrfs_submit_compressed_read(struct btrfs_bio *bbio, int mirror_num)
>   	cb->len = bbio->bio.bi_iter.bi_size;
>   	cb->compressed_len = compressed_len;
>   	cb->compress_type = em->compress_type;
> -	cb->orig_bio = &bbio->bio;
> +	cb->orig_bbio = bbio;
>   
>   	free_extent_map(em);
>   
> @@ -966,7 +967,7 @@ static int btrfs_decompress_bio(struct compressed_bio *cb)
>   	put_workspace(type, workspace);
>   
>   	if (!ret)
> -		zero_fill_bio(cb->orig_bio);
> +		zero_fill_bio(&cb->orig_bbio->bio);
>   	return ret;
>   }
>   
> @@ -1044,7 +1045,7 @@ void __cold btrfs_exit_compress(void)
>   int btrfs_decompress_buf2page(const char *buf, u32 buf_len,
>   			      struct compressed_bio *cb, u32 decompressed)
>   {
> -	struct bio *orig_bio = cb->orig_bio;
> +	struct bio *orig_bio = &cb->orig_bbio->bio;
>   	/* Offset inside the full decompressed extent */
>   	u32 cur_offset;
>   
> diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
> index 692bafa1050e8e..5d5146e72a860b 100644
> --- a/fs/btrfs/compression.h
> +++ b/fs/btrfs/compression.h
> @@ -55,7 +55,7 @@ struct compressed_bio {
>   
>   	union {
>   		/* For reads, this is the bio we are copying the data into */
> -		struct bio *orig_bio;
> +		struct btrfs_bio *orig_bbio;
>   		struct work_struct write_end_work;
>   	};
>
Anand Jain March 3, 2023, 9:16 a.m. UTC | #3
On 01/03/2023 21:42, Christoph Hellwig wrote:
> The original bio must be a btrfs_bio, so store a pointer to the
> btrfs_bio for better type checking.
> 
> 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/compression.c b/fs/btrfs/compression.c
index c12e317e133624..c5839d04690d67 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -177,7 +177,7 @@  static void end_compressed_bio_read(struct btrfs_bio *bbio)
 		status = errno_to_blk_status(btrfs_decompress_bio(cb));
 
 	btrfs_free_compressed_pages(cb);
-	btrfs_bio_end_io(btrfs_bio(cb->orig_bio), status);
+	btrfs_bio_end_io(cb->orig_bbio, status);
 	bio_put(&bbio->bio);
 }
 
@@ -357,7 +357,8 @@  static noinline int add_ra_bio_pages(struct inode *inode,
 {
 	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
 	unsigned long end_index;
-	u64 cur = btrfs_bio(cb->orig_bio)->file_offset + cb->orig_bio->bi_iter.bi_size;
+	struct bio *orig_bio = &cb->orig_bbio->bio;
+	u64 cur = cb->orig_bbio->file_offset + orig_bio->bi_iter.bi_size;
 	u64 isize = i_size_read(inode);
 	int ret;
 	struct page *page;
@@ -447,7 +448,7 @@  static noinline int add_ra_bio_pages(struct inode *inode,
 		 */
 		if (!em || cur < em->start ||
 		    (cur + fs_info->sectorsize > extent_map_end(em)) ||
-		    (em->block_start >> 9) != cb->orig_bio->bi_iter.bi_sector) {
+		    (em->block_start >> 9) != orig_bio->bi_iter.bi_sector) {
 			free_extent_map(em);
 			unlock_extent(tree, cur, page_end, NULL);
 			unlock_page(page);
@@ -467,7 +468,7 @@  static noinline int add_ra_bio_pages(struct inode *inode,
 		}
 
 		add_size = min(em->start + em->len, page_end + 1) - cur;
-		ret = bio_add_page(cb->orig_bio, page, add_size, offset_in_page(cur));
+		ret = bio_add_page(orig_bio, page, add_size, offset_in_page(cur));
 		if (ret != add_size) {
 			unlock_extent(tree, cur, page_end, NULL);
 			unlock_page(page);
@@ -537,7 +538,7 @@  void btrfs_submit_compressed_read(struct btrfs_bio *bbio, int mirror_num)
 	cb->len = bbio->bio.bi_iter.bi_size;
 	cb->compressed_len = compressed_len;
 	cb->compress_type = em->compress_type;
-	cb->orig_bio = &bbio->bio;
+	cb->orig_bbio = bbio;
 
 	free_extent_map(em);
 
@@ -966,7 +967,7 @@  static int btrfs_decompress_bio(struct compressed_bio *cb)
 	put_workspace(type, workspace);
 
 	if (!ret)
-		zero_fill_bio(cb->orig_bio);
+		zero_fill_bio(&cb->orig_bbio->bio);
 	return ret;
 }
 
@@ -1044,7 +1045,7 @@  void __cold btrfs_exit_compress(void)
 int btrfs_decompress_buf2page(const char *buf, u32 buf_len,
 			      struct compressed_bio *cb, u32 decompressed)
 {
-	struct bio *orig_bio = cb->orig_bio;
+	struct bio *orig_bio = &cb->orig_bbio->bio;
 	/* Offset inside the full decompressed extent */
 	u32 cur_offset;
 
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index 692bafa1050e8e..5d5146e72a860b 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -55,7 +55,7 @@  struct compressed_bio {
 
 	union {
 		/* For reads, this is the bio we are copying the data into */
-		struct bio *orig_bio;
+		struct btrfs_bio *orig_bbio;
 		struct work_struct write_end_work;
 	};