mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
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>
This commit is contained in:
parent
a8511baf32
commit
cfb999b81a
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user