fs: nfs: return per memcg count for xattr shrinkers
authorYang Shi <shy828301@gmail.com>
Sun, 27 Sep 2020 11:42:20 +0000 (04:42 -0700)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Fri, 2 Oct 2020 12:46:46 +0000 (08:46 -0400)
The list_lru_count() returns the pre node count, but the new xattr
shrinkers are memcg aware, so the shrinkers should return per memcg
count by calling list_lru_shrink_count() instead.  Otherwise over-shrink
might be experienced.  The problem was spotted by visual code
inspection.

Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Anna Schumaker <anna.schumaker@netapp.com>
Cc: Frank van der Linden <fllinden@amazon.com>
Signed-off-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Frank van der Linden <fllinden@amazon.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs42xattr.c

index 22396a7..b51424f 100644 (file)
@@ -881,7 +881,7 @@ nfs4_xattr_cache_count(struct shrinker *shrink, struct shrink_control *sc)
 {
        unsigned long count;
 
-       count = list_lru_count(&nfs4_xattr_cache_lru);
+       count = list_lru_shrink_count(&nfs4_xattr_cache_lru, sc);
        return vfs_pressure_ratio(count);
 }
 
@@ -975,7 +975,7 @@ nfs4_xattr_entry_count(struct shrinker *shrink, struct shrink_control *sc)
        lru = (shrink == &nfs4_xattr_large_entry_shrinker) ?
            &nfs4_xattr_large_entry_lru : &nfs4_xattr_entry_lru;
 
-       count = list_lru_count(lru);
+       count = list_lru_shrink_count(lru, sc);
        return vfs_pressure_ratio(count);
 }