linux/fs/erofs
Gao Xiang 1001042e54 erofs: avoid refcounting short-lived pages
LZ4 always reuses the decompressed buffer as its LZ77 sliding window
(dynamic dictionary) for optimal performance.  However, in specific
cases, the output buffer may not fully contain valid page cache pages,
resulting in the use of short-lived pages for temporary purposes.

Due to the limited sliding window size, LZ4 shortlived bounce pages can
also be reused in a sliding manner, so each bounce page can be vmapped
multiple times in different relative positions by design.  In order to
avoiding double frees, currently, reuse counts are recorded via page
refcount, but it will no longer be used as-is in the future world of
Memdescs.

Just maintain a lookup table to check if a shortlived page is reused.

Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240711053659.1364989-1-hsiangkao@linux.alibaba.com
2024-07-11 15:14:26 +08:00
..
compress.h erofs: avoid refcounting short-lived pages 2024-07-11 15:14:26 +08:00
data.c Changes since last update: 2024-05-24 09:31:50 -07:00
decompressor_deflate.c erofs: tidy up stream decompressors 2024-07-09 19:04:41 +08:00
decompressor_lzma.c erofs: tidy up stream decompressors 2024-07-09 19:04:41 +08:00
decompressor_zstd.c erofs: tidy up stream decompressors 2024-07-09 19:04:41 +08:00
decompressor.c erofs: avoid refcounting short-lived pages 2024-07-11 15:14:26 +08:00
dir.c erofs_buf: store address_space instead of inode 2024-04-25 00:57:14 -04:00
erofs_fs.h erofs: Zstandard compression support 2024-05-09 07:46:56 +08:00
fscache.c erofs: don't align offset for erofs_read_metabuf() (simple cases) 2024-05-18 01:47:26 +08:00
inode.c erofs: mechanically convert erofs_read_metabuf() to offsets 2024-05-18 01:46:18 +08:00
internal.h erofs: refine z_erofs_{init,exit}_subsystem() 2024-07-09 19:04:40 +08:00
Kconfig erofs: Zstandard compression support 2024-05-09 07:46:56 +08:00
Makefile erofs: Zstandard compression support 2024-05-09 07:46:56 +08:00
namei.c erofs_buf: store address_space instead of inode 2024-04-25 00:57:14 -04:00
super.c erofs: refine z_erofs_{init,exit}_subsystem() 2024-07-09 19:04:40 +08:00
sysfs.c erofs: make kobj_type structures constant 2023-02-15 08:11:26 +08:00
xattr.c erofs_buf: store address_space instead of inode 2024-04-25 00:57:14 -04:00
xattr.h erofs: move erofs_xattr_handlers and xattr_handler_map to .rodata 2023-10-09 16:24:17 +02:00
zdata.c erofs: avoid refcounting short-lived pages 2024-07-11 15:14:26 +08:00
zmap.c erofs: get rid of z_erofs_map_blocks_iter_* tracepoints 2024-07-10 18:57:06 +08:00
zutil.c erofs: fix possible memory leak in z_erofs_gbuf_exit() 2024-06-26 17:02:15 +08:00