linux/fs/erofs
Gao Xiang 06a304cd9c erofs: introduce bufvec to store decompressed buffers
For each pcluster, the total compressed buffers are determined in
advance, yet the number of decompressed buffers actually vary.  Too
many decompressed pages can be recorded if one pcluster is highly
compressed or its pcluster size is large.  That takes extra memory
footprints compared to uncompressed filesystems, especially a lot of
I/O in flight on low-ended devices.

Therefore, similar to inplace I/O, pagevec was introduced to reuse
page cache to store these pointers in the time-sharing way since
these pages are actually unused before decompressing.

In order to make it more flexable, a cleaner bufvec is used to
replace the old pagevec stuffs so that

 - Decompressed offsets can be stored inline, thus it can be used
   for the upcoming feature like compressed data deduplication.
   It's calculated by `page_offset(page) - map->m_la';

 - Towards supporting large folios for compressed inodes since
   our final goal is to completely avoid page->private but use
   folio->private only for all page cache pages.

Acked-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20220715154203.48093-5-hsiangkao@linux.alibaba.com
2022-07-21 22:54:10 +08:00
..
compress.h erofs: introduce z_erofs_fixup_insize 2021-12-29 06:42:07 +08:00
data.c Page cache changes for 5.19 2022-05-24 19:55:07 -07:00
decompressor_lzma.c erofs: wake up all waiters after z_erofs_lzma_head ready 2022-07-09 06:32:29 +08:00
decompressor.c erofs: avoid consecutive detection for Highmem memory 2022-07-09 06:35:09 +08:00
dir.c erofs: use meta buffers for reading directories 2022-03-17 00:09:02 +08:00
erofs_fs.h erofs: scan devices from device table 2022-05-18 00:11:21 +08:00
fscache.c Changes since last update: 2022-06-01 11:54:29 -07:00
inode.c erofs: leave compressed inodes unsupported in fscache mode for now 2022-05-29 15:34:54 +08:00
internal.h erofs: implement fscache-based data read for non-inline layout 2022-05-18 00:11:20 +08:00
Kconfig erofs: register fscache volume 2022-05-18 00:11:19 +08:00
Makefile erofs: register fscache volume 2022-05-18 00:11:19 +08:00
namei.c erofs: make filesystem exportable 2022-05-17 23:48:54 +08:00
pcpubuf.c erofs: get rid of ->lru usage 2021-10-25 08:22:59 +08:00
super.c Page cache changes for 5.19 2022-05-24 19:55:07 -07:00
sysfs.c erofs: add 'fsid' mount option 2022-05-18 00:11:21 +08:00
tagptr.h erofs: clean up file headers & footers 2021-06-08 00:41:24 +08:00
utils.c erofs: fix deadlock when shrink erofs slab 2021-11-23 14:58:16 +08:00
xattr.c erofs: use meta buffers for xattr operations 2022-01-04 23:47:08 +08:00
xattr.h erofs: use meta buffers for xattr operations 2022-01-04 23:47:08 +08:00
zdata.c erofs: introduce bufvec to store decompressed buffers 2022-07-21 22:54:10 +08:00
zdata.h erofs: introduce bufvec to store decompressed buffers 2022-07-21 22:54:10 +08:00
zmap.c erofs: clean up z_erofs_extent_lookback 2022-03-17 00:08:48 +08:00
zpvec.h erofs: fix unsafe pagevec reuse of hooked pclusters 2021-11-08 10:02:10 +08:00