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
