]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
btrfs: reject single block sized compression early
authorQu Wenruo <wqu@suse.com>
Tue, 6 Jan 2026 02:50:30 +0000 (13:20 +1030)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:51:42 +0000 (07:51 +0100)
commit59615e2c1f63dfd65f74c166e803873d3362e51a
tree19e24f5972cce31dabe84a9e523ea6e4f9806158
parentd6f6109fe4b32878df8a5d4143a055ea680b1f84
btrfs: reject single block sized compression early

Currently for an inode that needs compression, even if there is a delalloc
range that is single fs block sized and can not be inlined, we will
still go through the compression path.

Then inside compress_file_range(), we have one extra check to reject
single block sized range, and fall back to regular uncompressed write.

This rejection is in fact a little too late, we have already allocated
memory to async_chunk, delayed the submission, just to fallback to the
same uncompressed write.

Change the behavior to reject such cases earlier at
inode_need_compress(), so for such single block sized range we won't
even bother trying to go through compress path.

And since the inline small block check is inside inode_need_compress()
and compress_file_range() also calls that function, we no longer need a
dedicate check inside compress_file_range().

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c