Loading fs/bcachefs/bcachefs.h +1 −1 Original line number Diff line number Diff line Loading @@ -931,7 +931,7 @@ struct bch_fs { mempool_t compression_bounce[2]; mempool_t compress_workspace[BCH_COMPRESSION_TYPE_NR]; mempool_t decompress_workspace; ZSTD_parameters zstd_params; size_t zstd_workspace_size; struct crypto_shash *sha256; struct crypto_sync_skcipher *chacha20; Loading fs/bcachefs/compress.c +10 −6 Original line number Diff line number Diff line Loading @@ -354,8 +354,7 @@ static int attempt_compress(struct bch_fs *c, */ unsigned level = min((compression.level * 3) / 2, zstd_max_clevel()); ZSTD_parameters params = zstd_get_params(level, c->opts.encoded_extent_max); ZSTD_CCtx *ctx = zstd_init_cctx(workspace, zstd_cctx_workspace_bound(¶ms.cParams)); ZSTD_CCtx *ctx = zstd_init_cctx(workspace, c->zstd_workspace_size); /* * ZSTD requires that when we decompress we pass in the exact Loading @@ -371,7 +370,7 @@ static int attempt_compress(struct bch_fs *c, size_t len = zstd_compress_cctx(ctx, dst + 4, dst_len - 4 - 7, src, src_len, &c->zstd_params); ¶ms); if (zstd_is_error(len)) return 0; Loading Loading @@ -572,6 +571,13 @@ static int __bch2_fs_compress_init(struct bch_fs *c, u64 features) size_t decompress_workspace_size = 0; ZSTD_parameters params = zstd_get_params(zstd_max_clevel(), c->opts.encoded_extent_max); /* * ZSTD is lying: if we allocate the size of the workspace it says it * requires, it returns memory allocation errors */ c->zstd_workspace_size = zstd_cctx_workspace_bound(¶ms.cParams); struct { unsigned feature; enum bch_compression_type type; Loading @@ -585,13 +591,11 @@ static int __bch2_fs_compress_init(struct bch_fs *c, u64 features) zlib_deflate_workspacesize(MAX_WBITS, DEF_MEM_LEVEL), zlib_inflate_workspacesize(), }, { BCH_FEATURE_zstd, BCH_COMPRESSION_TYPE_zstd, zstd_cctx_workspace_bound(¶ms.cParams), c->zstd_workspace_size, zstd_dctx_workspace_bound() }, }, *i; bool have_compressed = false; c->zstd_params = params; for (i = compression_types; i < compression_types + ARRAY_SIZE(compression_types); i++) Loading Loading
fs/bcachefs/bcachefs.h +1 −1 Original line number Diff line number Diff line Loading @@ -931,7 +931,7 @@ struct bch_fs { mempool_t compression_bounce[2]; mempool_t compress_workspace[BCH_COMPRESSION_TYPE_NR]; mempool_t decompress_workspace; ZSTD_parameters zstd_params; size_t zstd_workspace_size; struct crypto_shash *sha256; struct crypto_sync_skcipher *chacha20; Loading
fs/bcachefs/compress.c +10 −6 Original line number Diff line number Diff line Loading @@ -354,8 +354,7 @@ static int attempt_compress(struct bch_fs *c, */ unsigned level = min((compression.level * 3) / 2, zstd_max_clevel()); ZSTD_parameters params = zstd_get_params(level, c->opts.encoded_extent_max); ZSTD_CCtx *ctx = zstd_init_cctx(workspace, zstd_cctx_workspace_bound(¶ms.cParams)); ZSTD_CCtx *ctx = zstd_init_cctx(workspace, c->zstd_workspace_size); /* * ZSTD requires that when we decompress we pass in the exact Loading @@ -371,7 +370,7 @@ static int attempt_compress(struct bch_fs *c, size_t len = zstd_compress_cctx(ctx, dst + 4, dst_len - 4 - 7, src, src_len, &c->zstd_params); ¶ms); if (zstd_is_error(len)) return 0; Loading Loading @@ -572,6 +571,13 @@ static int __bch2_fs_compress_init(struct bch_fs *c, u64 features) size_t decompress_workspace_size = 0; ZSTD_parameters params = zstd_get_params(zstd_max_clevel(), c->opts.encoded_extent_max); /* * ZSTD is lying: if we allocate the size of the workspace it says it * requires, it returns memory allocation errors */ c->zstd_workspace_size = zstd_cctx_workspace_bound(¶ms.cParams); struct { unsigned feature; enum bch_compression_type type; Loading @@ -585,13 +591,11 @@ static int __bch2_fs_compress_init(struct bch_fs *c, u64 features) zlib_deflate_workspacesize(MAX_WBITS, DEF_MEM_LEVEL), zlib_inflate_workspacesize(), }, { BCH_FEATURE_zstd, BCH_COMPRESSION_TYPE_zstd, zstd_cctx_workspace_bound(¶ms.cParams), c->zstd_workspace_size, zstd_dctx_workspace_bound() }, }, *i; bool have_compressed = false; c->zstd_params = params; for (i = compression_types; i < compression_types + ARRAY_SIZE(compression_types); i++) Loading