zram: recalculate zstd compression params once
zstd compression params depends on level, but are constant for a given instance of zstd compression backend. Calculate once (during ctx creation). Link: https://lkml.kernel.org/r/20240902105656.1383858-15-senozhatsky@chromium.org Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Nick Terrell <terrelln@fb.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
f2bac7ad18
commit
eb826a0190
@ -10,6 +10,7 @@
|
||||
struct zstd_ctx {
|
||||
zstd_cctx *cctx;
|
||||
zstd_dctx *dctx;
|
||||
zstd_parameters cprm;
|
||||
void *cctx_mem;
|
||||
void *dctx_mem;
|
||||
s32 level;
|
||||
@ -40,6 +41,7 @@ static void *zstd_create(struct zcomp_params *params)
|
||||
ctx->level = zstd_default_clevel();
|
||||
|
||||
prm = zstd_get_params(ctx->level, PAGE_SIZE);
|
||||
ctx->cprm = zstd_get_params(ctx->level, PAGE_SIZE);
|
||||
sz = zstd_cctx_workspace_bound(&prm.cParams);
|
||||
ctx->cctx_mem = vzalloc(sz);
|
||||
if (!ctx->cctx_mem)
|
||||
@ -69,11 +71,10 @@ static int zstd_compress(void *ctx, const unsigned char *src, size_t src_len,
|
||||
unsigned char *dst, size_t *dst_len)
|
||||
{
|
||||
struct zstd_ctx *zctx = ctx;
|
||||
const zstd_parameters prm = zstd_get_params(zctx->level, PAGE_SIZE);
|
||||
size_t ret;
|
||||
|
||||
ret = zstd_compress_cctx(zctx->cctx, dst, *dst_len,
|
||||
src, src_len, &prm);
|
||||
src, src_len, &zctx->cprm);
|
||||
if (zstd_is_error(ret))
|
||||
return -EINVAL;
|
||||
*dst_len = ret;
|
||||
|
Loading…
Reference in New Issue
Block a user