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: Anand Jain <anand.jain@oracle.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
34f888ce3a
commit
7edb9a3e72
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -350,8 +350,6 @@ done:
|
|||
zlib_inflateEnd(&workspace->strm);
|
||||
if (data_in)
|
||||
kunmap_local(data_in);
|
||||
if (!ret)
|
||||
zero_fill_bio(cb->orig_bio);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue