aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2025-02-12 21:22:02 +0100
committerDavid Sterba <dsterba@suse.com>2025-03-18 20:35:42 +0100
commitcfb999b81aa6285db1ecf090346be46d53213384 (patch)
tree5a99c20e4c2028afc159066c7f0cc17ed917d5f3
parentbtrfs: async-thread: switch local variables need_order bool (diff)
downloadwireguard-linux-cfb999b81aa6285db1ecf090346be46d53213384.tar.xz
wireguard-linux-cfb999b81aa6285db1ecf090346be46d53213384.zip
btrfs: zstd: move zstd_parameters to the workspace
Reduce stack consumption of zstd_compress_folios() by 40 bytes (10*sizeof(int)) as we can store struct zstd_parameters in the workspace that is reused for each call. typedef struct { ZSTD_compressionParameters cParams; ZSTD_frameParameters fParams; } ZSTD_parameters; typedef struct { unsigned windowLog; unsigned chainLog; unsigned hashLog; unsigned searchLog; unsigned minMatch; unsigned targetLength; ZSTD_strategy strategy; } ZSTD_compressionParameters; typedef struct { int contentSizeFlag; int checksumFlag; int noDictIDFlag; } ZSTD_frameParameters; Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/zstd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c
index a7bfbf8bea7d..5419c47b854f 100644
--- a/fs/btrfs/zstd.c
+++ b/fs/btrfs/zstd.c
@@ -53,6 +53,7 @@ struct workspace {
struct list_head lru_list;
zstd_in_buffer in_buf;
zstd_out_buffer out_buf;
+ zstd_parameters params;
};
/*
@@ -402,15 +403,14 @@ int zstd_compress_folios(struct list_head *ws, struct address_space *mapping,
unsigned long max_out = nr_dest_folios * PAGE_SIZE;
unsigned int pg_off;
unsigned int cur_len;
- zstd_parameters params = zstd_get_btrfs_parameters(workspace->req_level,
- len);
+ workspace->params = zstd_get_btrfs_parameters(workspace->req_level, len);
*out_folios = 0;
*total_out = 0;
*total_in = 0;
/* Initialize the stream */
- stream = zstd_init_cstream(&params, len, workspace->mem,
+ stream = zstd_init_cstream(&workspace->params, len, workspace->mem,
workspace->size);
if (unlikely(!stream)) {
struct btrfs_inode *inode = BTRFS_I(mapping->host);