]> www.infradead.org Git - users/jedix/linux-maple.git/commit
btrfs: prepare compression paths for large data folios
authorQu Wenruo <wqu@suse.com>
Mon, 7 Apr 2025 08:43:33 +0000 (18:13 +0930)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 May 2025 12:30:45 +0000 (14:30 +0200)
commit7bf9bfa94684c860479ef125eee4331673f54b5b
tree998b260b58065bf08bbbd52d7e54ada93f520608
parent9a36bad6c394f23b5a8deecaca9e47acce6be8b7
btrfs: prepare compression paths for large data folios

All compression algorithms inside btrfs are not supporting large folios
due to the following points:

- btrfs_calc_input_length() is assuming page sized folio

- kmap_local_folio() usages are using offset_in_page()

Prepare them to support large data folios by:

- Add a folio parameter to btrfs_calc_input_length()
  And use that folio parameter to calculate the correct length.

  Since we're here, also add extra ASSERT()s to make sure the parameter
  @cur is inside the folio range.

  This affects only zlib and zstd. Lzo compresses at most one block at a
  time, thus not affected.

- Use offset_in_folio() to calculate the kmap_local_folio() offset
  This affects all 3 algorithms.

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/compression.h
fs/btrfs/lzo.c
fs/btrfs/zlib.c
fs/btrfs/zstd.c