diff options
author | 2025-02-12 21:22:02 +0100 | |
---|---|---|
committer | 2025-03-18 20:35:42 +0100 | |
commit | cfb999b81aa6285db1ecf090346be46d53213384 (patch) | |
tree | 5a99c20e4c2028afc159066c7f0cc17ed917d5f3 | |
parent | btrfs: async-thread: switch local variables need_order bool (diff) | |
download | wireguard-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.c | 6 |
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(¶ms, 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); |