Commit 1d8fa2e2 authored by Goldwyn Rodrigues's avatar Goldwyn Rodrigues Committed by David Sterba
Browse files

btrfs: derive compression type from extent map during reads



Derive the compression type from extent map as opposed to the bio flags
passed. This makes it more precise and not reliant on function
parameters.

Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarGoldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent a13467ee
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -802,7 +802,7 @@ static noinline int add_ra_bio_pages(struct inode *inode,
 * bio we were passed and then call the bio end_io calls
 */
void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
				  int mirror_num, unsigned long bio_flags)
				  int mirror_num)
{
	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
	struct extent_map_tree *em_tree;
@@ -853,14 +853,14 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
	em_len = em->len;
	em_start = em->start;

	free_extent_map(em);
	em = NULL;

	cb->len = bio->bi_iter.bi_size;
	cb->compressed_len = compressed_len;
	cb->compress_type = extent_compress_type(bio_flags);
	cb->compress_type = em->compress_type;
	cb->orig_bio = bio;

	free_extent_map(em);
	em = NULL;

	cb->nr_pages = DIV_ROUND_UP(compressed_len, PAGE_SIZE);
	cb->compressed_pages = kcalloc(cb->nr_pages, sizeof(struct page *), GFP_NOFS);
	if (!cb->compressed_pages) {
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ blk_status_t btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
				  struct cgroup_subsys_state *blkcg_css,
				  bool writeback);
void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,
				  int mirror_num, unsigned long bio_flags);
				  int mirror_num);

unsigned int btrfs_compress_str2level(unsigned int type, const char *str);

+1 −2
Original line number Diff line number Diff line
@@ -2606,8 +2606,7 @@ void btrfs_submit_data_bio(struct inode *inode, struct bio *bio,
			 * the bio if there were any errors, so just return
			 * here.
			 */
			btrfs_submit_compressed_read(inode, bio, mirror_num,
						     bio_flags);
			btrfs_submit_compressed_read(inode, bio, mirror_num);
			return;
		} else {
			/*