staging: erofs: introduce pagevec for unzip subsystem
authorGao Xiang <gaoxiang25@huawei.com>
Thu, 26 Jul 2018 12:21:57 +0000 (20:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jul 2018 15:24:08 +0000 (17:24 +0200)
commit5eb20ec3e52496dfd0a2cf6a817993dd01ab2067
tree6d65bf0b4e1dba4f343b96c7e6a7bc37bad1eb4e
parentb8b58b3280b376d55f4e90f8d28904deb2dc1d5c
staging: erofs: introduce pagevec for unzip subsystem

For each compressed cluster, there is a straight-forward
way of allocating a fixed or variable-sized (for VLE) array
to record the corresponding file pages for its decompression
if we decide to decompress these pages asynchronously (eg.
read-ahead case), however it could take much extra on-heap
memory compared with traditional uncompressed filesystems.

This patch introduces a pagevec solution to reuse some
allocated file page in the time-sharing approach storing
parts of the array itself in order to minimize the extra
memory overhead, thus only a constant and small-sized array
used for booting the whole array itself up will be needed.

Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/erofs/unzip_pagevec.h [new file with mode: 0644]