From: Gao Xiang <hsiang...@aol.com> Hi folks,
This is the first RFC patch of multiple block compression (including erofsfuse) after I carefully think over the on-disk design to support multiblock in-place decompression. Compression ratio results (POC, lz4hc, lz4-1.9.3, not final result): 1000000000 enwik9 621211648 enwik9_4k.squashfs.img 557858816 enwik9_4k.erofs.img 556191744 enwik9_8k.squashfs.img 502661120 enwik9_16k.squashfs.img 500723712 enwik9_8k.erofs.img 458784768 enwik9_32k.squashfs.img 453971968 enwik9_16k.erofs.img 422318080 enwik9_64k.squashfs.img 416686080 enwik9_32k.erofs.img 398204928 enwik9_128k.squashfs.img 395276288 enwik9_64k.erofs.img TODO: - support compact indexes for multiple block compression **; - support multithread compression (keep compressed data in memory); - carefully design kernel optimized paths to maximize runtime performance; - widely testing. If you think that'd be useful for your products and you also have interest in development, feel free to follow that as well since I don't have abundant free time so the progress might be somewhat slow (I tend to finish them all before the next LTS). Thanks, Gao Xiang Gao Xiang (3): erofs-utils: add -C# for the maximum size of pclusters erofs-utils: mkfs: support multiple block compression erofs-utils: fuse: support multiple block compression include/erofs/config.h | 2 ++ include/erofs/internal.h | 1 + include/erofs_fs.h | 19 ++++++++--- lib/compress.c | 70 ++++++++++++++++++++++++-------------- lib/config.c | 1 + lib/data.c | 4 +-- lib/zmap.c | 72 ++++++++++++++++++++++++++++++++++++---- mkfs/main.c | 14 +++++++- 8 files changed, 146 insertions(+), 37 deletions(-) -- 2.24.0