diff options
Diffstat (limited to 'fs/btrfs/compression.c')
| -rw-r--r-- | fs/btrfs/compression.c | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index 32da97c3c19d..71e5b2e9a1ba 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -96,10 +96,10 @@ static int compression_compress_pages(int type, struct list_head *ws,  	}  } -static int compression_decompress_bio(int type, struct list_head *ws, -		struct compressed_bio *cb) +static int compression_decompress_bio(struct list_head *ws, +				      struct compressed_bio *cb)  { -	switch (type) { +	switch (cb->compress_type) {  	case BTRFS_COMPRESS_ZLIB: return zlib_decompress_bio(ws, cb);  	case BTRFS_COMPRESS_LZO:  return lzo_decompress_bio(ws, cb);  	case BTRFS_COMPRESS_ZSTD: return zstd_decompress_bio(ws, cb); @@ -157,7 +157,8 @@ static int check_compressed_csum(struct btrfs_inode *inode, struct bio *bio,  	struct compressed_bio *cb = bio->bi_private;  	u8 *cb_sum = cb->sums; -	if (!fs_info->csum_root || (inode->flags & BTRFS_INODE_NODATASUM)) +	if ((inode->flags & BTRFS_INODE_NODATASUM) || +	    test_bit(BTRFS_FS_STATE_NO_CSUMS, &fs_info->fs_state))  		return 0;  	shash->tfm = fs_info->csum_shash; @@ -1359,7 +1360,7 @@ static int btrfs_decompress_bio(struct compressed_bio *cb)  	int type = cb->compress_type;  	workspace = get_workspace(type, 0); -	ret = compression_decompress_bio(type, workspace, cb); +	ret = compression_decompress_bio(workspace, cb);  	put_workspace(type, workspace);  	return ret; |