Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 488111aa authored by Filipe David Borba Manana's avatar Filipe David Borba Manana Committed by Chris Mason
Browse files

Btrfs: fix csum search offset/length calculation in log tree



We were setting the csums search offset and length to the right values if
the extent is compressed, but later on right before doing the csums lookup
we were overriding these two parameters regardless of compression being
set or not for the extent.

Signed-off-by: default avatarFilipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
parent e46f5388
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -3421,11 +3421,6 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
	if (skip_csum)
		return 0;

	if (em->compress_type) {
		csum_offset = 0;
		csum_len = block_len;
	}

	/*
	 * First check and see if our csums are on our outstanding ordered
	 * extents.
@@ -3509,8 +3504,13 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
	if (!mod_len || ret)
		return ret;

	if (em->compress_type) {
		csum_offset = 0;
		csum_len = block_len;
	} else {
		csum_offset = mod_start - em->start;
		csum_len = mod_len;
	}

	/* block start is already adjusted for the file extent offset. */
	ret = btrfs_lookup_csums_range(log->fs_info->csum_root,