fs/dcache: Track & report number of negative dentries
authorWaiman Long <longman@redhat.com>
Wed, 30 Jan 2019 18:52:38 +0000 (13:52 -0500)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Jan 2019 19:02:11 +0000 (11:02 -0800)
commitaf0c9af1b3f66052c369d08be3f60fa9a9559e48
tree94a1e127d6e4dd81382f62c0ea7822fb2f2ffd56
parent7d10f70fc198877b43d92bdcd7604279788b9568
fs/dcache: Track & report number of negative dentries

The current dentry number tracking code doesn't distinguish between
positive & negative dentries.  It just reports the total number of
dentries in the LRU lists.

As excessive number of negative dentries can have an impact on system
performance, it will be wise to track the number of positive and
negative dentries separately.

This patch adds tracking for the total number of negative dentries in
the system LRU lists and reports it in the 5th field in the
/proc/sys/fs/dentry-state file.  The number, however, does not include
negative dentries that are in flight but not in the LRU yet as well as
those in the shrinker lists which are on the way out anyway.

The number of positive dentries in the LRU lists can be roughly found by
subtracting the number of negative dentries from the unused count.

Matthew Wilcox had confirmed that since the introduction of the
dentry_stat structure in 2.1.60, the dummy array was there, probably for
future extension.  They were not replacements of pre-existing fields.
So no sane applications that read the value of /proc/sys/fs/dentry-state
will do dummy thing if the last 2 fields of the sysctl parameter are not
zero.  IOW, it will be safe to use one of the dummy array entry for
negative dentry count.

Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/sysctl/fs.txt
fs/dcache.c
include/linux/dcache.h