[PATCH v4 0/5] erofs: support tail-packing inline compressed data

From: Gao Xiang
Date: Tue Dec 28 2021 - 00:49:26 EST


Hi folks,

v2: https://lore.kernel.org/r/20211225070626.74080-1-hsiangkao@xxxxxxxxxxxxxxxxx
mkfs v8: https://lore.kernel.org/r/20211224012316.42929-1-hsiangkao@xxxxxxxxxxxxxxxxx

This is the 4th version of tail-packing inline compressed data feature.
It tries to inline the tail pcluster right after the inode metadata to
save data I/O and storage space.

Take Linux 5.10.87 source code as an example:
linux-5.10.87 (erofs, uncompressed) 972570624

linux-5.10.87 (erofs, lz4hc,9 4k tailpacking) 391696384
linux-5.10.87 (erofs, lz4hc,9 8k tailpacking) 368807936
linux-5.10.87 (erofs, lz4hc,9 16k tailpacking) 345649152

linux-5.10.87 (erofs, lz4hc,9 4k vanilla) 416079872
linux-5.10.87 (erofs, lz4hc,9 8k vanilla) 395493376
linux-5.10.87 (erofs, lz4hc,9 16k vanilla) 383213568

Thanks,
Gao Xiang

changes since v3:
- add comments about z_erofs_lz4_decompress_ctx (Chao);
- move cache_strategy together with preload_compressed_pages (Yue);
- remove duplicated code about z_idata_size (Yue);
- rename z_idata_headlcn to z_tailextent_headlcn since
EROFS_GET_BLOCKS_FINDTAIL is a generic flag which is not
only used for tail pcluster (Yue).

Gao Xiang (3):
erofs: tidy up z_erofs_lz4_decompress
erofs: introduce z_erofs_fixup_insize
erofs: support unaligned data decompression

Yue Hu (2):
erofs: support inline data decompression
erofs: add on-disk compressed tail-packing inline support

fs/erofs/compress.h | 4 +-
fs/erofs/decompressor.c | 132 +++++++++++++++++++--------------
fs/erofs/decompressor_lzma.c | 19 ++---
fs/erofs/erofs_fs.h | 10 ++-
fs/erofs/internal.h | 6 ++
fs/erofs/super.c | 3 +
fs/erofs/sysfs.c | 2 +
fs/erofs/zdata.c | 139 +++++++++++++++++++++++------------
fs/erofs/zdata.h | 24 +++++-
fs/erofs/zmap.c | 113 ++++++++++++++++++++--------
10 files changed, 306 insertions(+), 146 deletions(-)

--
2.24.4