From: Gao Xiang Date: Wed, 7 Aug 2024 08:54:13 +0000 (+0800) Subject: erofs-utils: enable multi-threaded support for `-Eall-fragments` X-Git-Tag: v1.8~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=10c1590c0920bea7298d6fefd6154d9bb4230923;p=platform%2Fupstream%2Ferofs-utils.git erofs-utils: enable multi-threaded support for `-Eall-fragments` Since `-Eall-fragments` packs the whole data into the special inode, it's possible to use the multi-threaded compression for this. Some users may be interested in `-Eall-fragments` for extreme compression anyway. Signed-off-by: Gao Xiang Reviewed-by: Sandeep Dhavale Link: https://lore.kernel.org/r/20240807085413.717066-1-hsiangkao@linux.alibaba.com --- diff --git a/lib/compress.c b/lib/compress.c index cea96f4..8655e78 100644 --- a/lib/compress.c +++ b/lib/compress.c @@ -1763,7 +1763,8 @@ int z_erofs_compress_init(struct erofs_sb_info *sbi, struct erofs_buffer_head *s z_erofs_mt_enabled = false; #ifdef EROFS_MT_ENABLED - if (cfg.c_mt_workers > 1 && (cfg.c_dedupe || cfg.c_fragments)) { + if (cfg.c_mt_workers >= 1 && (cfg.c_dedupe || + (cfg.c_fragments && !cfg.c_all_fragments))) { if (cfg.c_dedupe) erofs_warn("multi-threaded dedupe is NOT implemented for now"); if (cfg.c_fragments) @@ -1771,7 +1772,7 @@ int z_erofs_compress_init(struct erofs_sb_info *sbi, struct erofs_buffer_head *s cfg.c_mt_workers = 0; } - if (cfg.c_mt_workers > 1) { + if (cfg.c_mt_workers >= 1) { ret = erofs_alloc_workqueue(&z_erofs_mt_ctrl.wq, cfg.c_mt_workers, cfg.c_mt_workers << 2,