bcachefs: mark bch_inode_info and bkey_cached as reclaimable
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 13 Jul 2023 16:00:28 +0000 (18:00 +0200)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:07 +0000 (17:10 -0400)
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@redhat.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_key_cache.c
fs/bcachefs/fs.c

index 34d959c4e6405e50d29285aa1d34dd956d0d63d9..badb541f493f222e46113e15c5737fc1871e2bfc 100644 (file)
@@ -1066,7 +1066,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 9280f514bc9f52e3ec873c5231eab6bcc33146a8..e1824bdffdf82d9ee098bd9fb5d534dc4988d48c 100644 (file)
@@ -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;