From: Qu Wenruo Date: Fri, 27 Feb 2026 02:45:53 +0000 (+1030) Subject: btrfs: extract the max compression chunk size into a macro X-Git-Tag: v7.1-rc1~231^2~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cab4c8b594e23649591317c5f0606ea6a8a27236;p=thirdparty%2Fkernel%2Flinux.git btrfs: extract the max compression chunk size into a macro We have two locations using open-coded 512K size, as the async chunk size. For compression we have not only the max size a compressed extent can represent (128K), but also how large an async chunk can be (512K). Although we have a macro for the maximum compressed extent size, we do not have any macro for the async chunk size. Add such a macro and replace the two open-coded SZ_512K. Reviewed-by: Filipe Manana Signed-off-by: Qu Wenruo Signed-off-by: David Sterba --- diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h index 84600b284e1e2..973530e9ce6c2 100644 --- a/fs/btrfs/compression.h +++ b/fs/btrfs/compression.h @@ -36,6 +36,9 @@ struct btrfs_ordered_extent; #define BTRFS_MAX_COMPRESSED_PAGES (BTRFS_MAX_COMPRESSED / PAGE_SIZE) static_assert((BTRFS_MAX_COMPRESSED % PAGE_SIZE) == 0); +/* The max size for a single worker to compress. */ +#define BTRFS_COMPRESSION_CHUNK_SIZE (SZ_512K) + /* Maximum size of data before compression */ #define BTRFS_MAX_UNCOMPRESSED (SZ_128K) diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ea3746c14760b..89ab33c5b9403 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -1691,7 +1691,7 @@ static bool run_delalloc_compressed(struct btrfs_inode *inode, struct async_cow *ctx; struct async_chunk *async_chunk; unsigned long nr_pages; - u64 num_chunks = DIV_ROUND_UP(end - start, SZ_512K); + u64 num_chunks = DIV_ROUND_UP(end - start, BTRFS_COMPRESSION_CHUNK_SIZE); int i; unsigned nofs_flag; const blk_opf_t write_flags = wbc_to_write_flags(wbc); @@ -1708,7 +1708,7 @@ static bool run_delalloc_compressed(struct btrfs_inode *inode, atomic_set(&ctx->num_chunks, num_chunks); for (i = 0; i < num_chunks; i++) { - u64 cur_end = min(end, start + SZ_512K - 1); + u64 cur_end = min(end, start + BTRFS_COMPRESSION_CHUNK_SIZE - 1); /* * igrab is called higher up in the call chain, take only the