erofs: lzma compression support

Add microLZMA support in order to maximize compression ratios but
control read amplification and memory footprint as well, which is
useful for low-end embedded boards.

microLZMA is a new container format of raw LZMA1, which was created
by Lasse Collin to be used by things where wasting minimal amount of
space for headers is important, especially like 4kb pclusters.

Similiar to LZ4, inplace I/O approach is used to minimize runtime
memory footprints in I/O submission. Overlapped decompression is
handled with 1) bounced buffer for data under processing or 2) extra
short-lived pages from the on-stack pagepool which will be shared in
the same read request (128kb for example).

Signed-off-by: Gao Xiang <xiang@kernel.org>
10 files changed