]> www.infradead.org Git - users/dwmw2/linux.git/commit
btrfs: zstd: make the compression path to handle sector size < page size
authorQu Wenruo <wqu@suse.com>
Fri, 6 Sep 2024 04:10:30 +0000 (13:40 +0930)
committerDavid Sterba <dsterba@suse.com>
Mon, 11 Nov 2024 13:34:12 +0000 (14:34 +0100)
commit90275a7762c85bde21c0884404993ed20e265d86
treee721ba72d396f4b2282d2a667e9c370bd8996551
parentf6ebedb09bb276256e084196e2322562dc4aac10
btrfs: zstd: make the compression path to handle sector size < page size

Inside zstd_compress_folios(), after exhausted one input page, we need
to switch to the next page as input.

However when counting the total input bytes (@tot_in), we always increase
it by PAGE_SIZE.

For the following case, it can cause incorrect value:

        0          32K         64K          96K
        |          |///////////||///////////|

After compressing range [32K, 64K), we switch to the next page, and
increasing @tot_in by 64K, while we only read 32K.

This will cause the @total_in to return a value larger than the input
length.

Fix it by only increase @tot_in by the input size.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/zstd.c