diff mbox series

[03/10] btrfs: move zero filling of compressed read bios into common code

Message ID 20230301134244.1378533-4-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
All algorithms have to fill the remainder of the orig_bio with zeroes,
so do it in common code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/btrfs/compression.c |  2 ++
 fs/btrfs/lzo.c         | 14 +++++---------
 fs/btrfs/zlib.c        |  2 --
 fs/btrfs/zstd.c        |  1 -
 4 files changed, 7 insertions(+), 12 deletions(-)

Comments

Johannes Thumshirn March 2, 2023, 12:17 p.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Qu Wenruo March 2, 2023, 11:25 p.m. UTC | #2
On 2023/3/1 21:42, Christoph Hellwig wrote:
> All algorithms have to fill the remainder of the orig_bio with zeroes,
> so do it in common code.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Qu Wenruo <wqu@suse.com>

Thanks,
Qu
> ---
>   fs/btrfs/compression.c |  2 ++
>   fs/btrfs/lzo.c         | 14 +++++---------
>   fs/btrfs/zlib.c        |  2 --
>   fs/btrfs/zstd.c        |  1 -
>   4 files changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index 5b1de1c19991e9..64c804dc3962f6 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -965,6 +965,8 @@ static int btrfs_decompress_bio(struct compressed_bio *cb)
>   	ret = compression_decompress_bio(workspace, cb);
>   	put_workspace(type, workspace);
>   
> +	if (!ret)
> +		zero_fill_bio(cb->orig_bio);
>   	return ret;
>   }
>   
> diff --git a/fs/btrfs/lzo.c b/fs/btrfs/lzo.c
> index dc66ee98989e90..3a095b9c6373ea 100644
> --- a/fs/btrfs/lzo.c
> +++ b/fs/btrfs/lzo.c
> @@ -389,8 +389,7 @@ int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   			 */
>   			btrfs_err(fs_info, "unexpectedly large lzo segment len %u",
>   					seg_len);
> -			ret = -EIO;
> -			goto out;
> +			return -EIO;
>   		}
>   
>   		/* Copy the compressed segment payload into workspace */
> @@ -401,8 +400,7 @@ int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   					    workspace->buf, &out_len);
>   		if (ret != LZO_E_OK) {
>   			btrfs_err(fs_info, "failed to decompress");
> -			ret = -EIO;
> -			goto out;
> +			return -EIO;
>   		}
>   
>   		/* Copy the data into inode pages */
> @@ -411,7 +409,7 @@ int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   
>   		/* All data read, exit */
>   		if (ret == 0)
> -			goto out;
> +			return 0;
>   		ret = 0;
>   
>   		/* Check if the sector has enough space for a segment header */
> @@ -422,10 +420,8 @@ int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   		/* Skip the padding zeros */
>   		cur_in += sector_bytes_left;
>   	}
> -out:
> -	if (!ret)
> -		zero_fill_bio(cb->orig_bio);
> -	return ret;
> +
> +	return 0;
>   }
>   
>   int lzo_decompress(struct list_head *ws, const u8 *data_in,
> diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c
> index da7bb9187b68a3..8acb05e176c540 100644
> --- a/fs/btrfs/zlib.c
> +++ b/fs/btrfs/zlib.c
> @@ -350,8 +350,6 @@ int zlib_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   	zlib_inflateEnd(&workspace->strm);
>   	if (data_in)
>   		kunmap_local(data_in);
> -	if (!ret)
> -		zero_fill_bio(cb->orig_bio);
>   	return ret;
>   }
>   
> diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c
> index e34f1ab99d56fe..f798da267590d4 100644
> --- a/fs/btrfs/zstd.c
> +++ b/fs/btrfs/zstd.c
> @@ -609,7 +609,6 @@ int zstd_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
>   		}
>   	}
>   	ret = 0;
> -	zero_fill_bio(cb->orig_bio);
>   done:
>   	if (workspace->in_buf.src)
>   		kunmap_local(workspace->in_buf.src);
Anand Jain March 3, 2023, 9:15 a.m. UTC | #3
On 01/03/2023 21:42, Christoph Hellwig wrote:
> All algorithms have to fill the remainder of the orig_bio with zeroes,
> so do it in common code.
> 
> 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 5b1de1c19991e9..64c804dc3962f6 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -965,6 +965,8 @@  static int btrfs_decompress_bio(struct compressed_bio *cb)
 	ret = compression_decompress_bio(workspace, cb);
 	put_workspace(type, workspace);
 
+	if (!ret)
+		zero_fill_bio(cb->orig_bio);
 	return ret;
 }
 
diff --git a/fs/btrfs/lzo.c b/fs/btrfs/lzo.c
index dc66ee98989e90..3a095b9c6373ea 100644
--- a/fs/btrfs/lzo.c
+++ b/fs/btrfs/lzo.c
@@ -389,8 +389,7 @@  int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 			 */
 			btrfs_err(fs_info, "unexpectedly large lzo segment len %u",
 					seg_len);
-			ret = -EIO;
-			goto out;
+			return -EIO;
 		}
 
 		/* Copy the compressed segment payload into workspace */
@@ -401,8 +400,7 @@  int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 					    workspace->buf, &out_len);
 		if (ret != LZO_E_OK) {
 			btrfs_err(fs_info, "failed to decompress");
-			ret = -EIO;
-			goto out;
+			return -EIO;
 		}
 
 		/* Copy the data into inode pages */
@@ -411,7 +409,7 @@  int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 
 		/* All data read, exit */
 		if (ret == 0)
-			goto out;
+			return 0;
 		ret = 0;
 
 		/* Check if the sector has enough space for a segment header */
@@ -422,10 +420,8 @@  int lzo_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 		/* Skip the padding zeros */
 		cur_in += sector_bytes_left;
 	}
-out:
-	if (!ret)
-		zero_fill_bio(cb->orig_bio);
-	return ret;
+
+	return 0;
 }
 
 int lzo_decompress(struct list_head *ws, const u8 *data_in,
diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c
index da7bb9187b68a3..8acb05e176c540 100644
--- a/fs/btrfs/zlib.c
+++ b/fs/btrfs/zlib.c
@@ -350,8 +350,6 @@  int zlib_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 	zlib_inflateEnd(&workspace->strm);
 	if (data_in)
 		kunmap_local(data_in);
-	if (!ret)
-		zero_fill_bio(cb->orig_bio);
 	return ret;
 }
 
diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c
index e34f1ab99d56fe..f798da267590d4 100644
--- a/fs/btrfs/zstd.c
+++ b/fs/btrfs/zstd.c
@@ -609,7 +609,6 @@  int zstd_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
 		}
 	}
 	ret = 0;
-	zero_fill_bio(cb->orig_bio);
 done:
 	if (workspace->in_buf.src)
 		kunmap_local(workspace->in_buf.src);