Commit 7edb9a3e authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David Sterba
Browse files

btrfs: move zero filling of compressed read bios into common code



All algorithms have to fill the remainder of the orig_bio with zeroes,
so do it in common code.

Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 34f888ce
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
}

+5 −9
Original line number Diff line number Diff line
@@ -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,
+0 −2
Original line number Diff line number Diff line
@@ -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;
}

+0 −1
Original line number Diff line number Diff line
@@ -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);