Commit f0f5329a authored by Boris Burkov's avatar Boris Burkov Committed by David Sterba
Browse files

btrfs: don't split NOCOW extent_maps in btrfs_extract_ordered_extent



NOCOW writes just overwrite an existing extent map, which thus should
not be split in btrfs_extract_ordered_extent.  The NOCOW case can't
currently happen as btrfs_extract_ordered_extent is only used on zoned
devices that do not support NOCOW writes, but this will change soon.

Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Tested-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarBoris Burkov <boris@bur.io>
[ hch: split from a larger patch, wrote a commit log ]
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 7edd339c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2621,6 +2621,14 @@ int btrfs_extract_ordered_extent(struct btrfs_bio *bbio,
	ret = btrfs_split_ordered_extent(ordered, len);
	if (ret)
		return ret;

	/*
	 * Don't split the extent_map for NOCOW extents, as we're writing into
	 * a pre-existing one.
	 */
	if (test_bit(BTRFS_ORDERED_NOCOW, &ordered->flags))
		return 0;

	return split_extent_map(inode, bbio->file_offset, ordered_len, len);
}