Re: [PATCH v1] fsck.erofs: implement thread-safe global LRU metadata cache
Gao Xiang <[email protected]>
| Newsgroups | org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
On 2026/6/11 16:36, Nithurshen wrote: > This patch introduces a thread-safe metadata cache to reduce redundant > I/O and decompression overhead during fsck extraction. > > To ensure it remains highly concurrent for worker threads extracting > pclusters, the cache utilizes a bucketed, rw-semaphore protected > architecture modeled after the existing fragment cache. > > Furthermore, to prevent out-of-memory (OOM) scenarios on exceptionally > large EROFS images, the cache implements a strict Global Least Recently > Used (LRU) eviction policy. The maximum cache size is dynamically > configurable via the new '--cache-size' parameter, which defaults to a > safe, fixed threshold of 32 MB. > > Signed-off-by: Nithurshen <[email protected]> why `malloc()` will prevent out-of-memory (OOM)? First, either erofs_read_metadata_nid() or erofs_read_metadata_bdi() will read file to the page cache; and currently there is no cache. But you introduce another cache using malloc(), since it increases the memory overhead, why it prevents out-of-memory (OOM)? Thanks, Gao Xiang