Mark these caches as reclaimable, so that available memory is correctly reported when there is a lot of cached inodes. Note that more work is needed - you should add __GFP_RECLAIMABLE to some of the kmalloc calls, so that they are allocated from the "kmalloc-rcl-*" caches. Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> --- fs/bcachefs/btree_key_cache.c | 2 +- fs/bcachefs/fs.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: bcachefs/fs/bcachefs/btree_key_cache.c =================================================================== --- bcachefs.orig/fs/bcachefs/btree_key_cache.c +++ bcachefs/fs/bcachefs/btree_key_cache.c @@ -1079,7 +1079,7 @@ void bch2_btree_key_cache_exit(void) int __init bch2_btree_key_cache_init(void) { - bch2_key_cache = KMEM_CACHE(bkey_cached, 0); + bch2_key_cache = KMEM_CACHE(bkey_cached, SLAB_RECLAIM_ACCOUNT); if (!bch2_key_cache) return -ENOMEM; Index: bcachefs/fs/bcachefs/fs.c =================================================================== --- bcachefs.orig/fs/bcachefs/fs.c +++ bcachefs/fs/bcachefs/fs.c @@ -1926,7 +1926,7 @@ int __init bch2_vfs_init(void) { int ret = -ENOMEM; - bch2_inode_cache = KMEM_CACHE(bch_inode_info, 0); + bch2_inode_cache = KMEM_CACHE(bch_inode_info, SLAB_RECLAIM_ACCOUNT); if (!bch2_inode_cache) goto err;