100 ~ 109 are now valid for LZMA extreme compression. Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com> --- lib/compressor_liblzma.c | 11 ++++++++--- man/mkfs.erofs.1 | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/lib/compressor_liblzma.c b/lib/compressor_liblzma.c index 4886d6a..f274dce 100644 --- a/lib/compressor_liblzma.c +++ b/lib/compressor_liblzma.c @@ -56,11 +56,16 @@ static int erofs_compressor_liblzma_setlevel(struct erofs_compress *c, int compression_level) { struct erofs_liblzma_context *ctx = c->private_data; + u32 preset; if (compression_level < 0) - compression_level = LZMA_PRESET_DEFAULT; + preset = LZMA_PRESET_DEFAULT; + else if (compression_level >= 100) + preset = (compression_level - 100) | LZMA_PRESET_EXTREME; + else + preset = compression_level; - if (lzma_lzma_preset(&ctx->opt, compression_level)) + if (lzma_lzma_preset(&ctx->opt, preset)) return -EINVAL; /* XXX: temporary hack */ @@ -97,7 +102,7 @@ static int erofs_compressor_liblzma_init(struct erofs_compress *c) const struct erofs_compressor erofs_compressor_lzma = { .name = "lzma", .default_level = LZMA_PRESET_DEFAULT, - .best_level = LZMA_PRESET_EXTREME, + .best_level = 109, .init = erofs_compressor_liblzma_init, .exit = erofs_compressor_liblzma_exit, .setlevel = erofs_compressor_liblzma_setlevel, diff --git a/man/mkfs.erofs.1 b/man/mkfs.erofs.1 index c1ad47d..e237877 100644 --- a/man/mkfs.erofs.1 +++ b/man/mkfs.erofs.1 @@ -22,7 +22,8 @@ from \fISOURCE\fR directory. .TP .BI "\-z " compression-algorithm " [" ",#" "]" Set an algorithm for file compression, which can be set with an optional -compression level separated by a comma. +compression level (1 to 12 for LZ4HC, 0 to 9 for LZMA and 100 to 109 for LZMA +extreme compression) separated by a comma. .TP .BI "\-C " max-pcluster-size Specify the maximum size of compress physical cluster in bytes. It may enable -- 2.24.4