aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2023-09-14 23:53:11 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2023-09-22 21:50:47 +0000
commit07c081e59232433ce522cfdf37bc4a8afad75330 (patch)
treec1d32b10d1162aba979215bc5d929f4171eb5b0e
parentb5210f3fb26031e24f2f4c465aa3eab64002353a (diff)
downloadsrc-07c081e59232433ce522cfdf37bc4a8afad75330.tar.gz
src-07c081e59232433ce522cfdf37bc4a8afad75330.zip
vfs: use vnlru_read_freevnodes for the freevnodes sysctl
For a more accurate result. (cherry picked from commit 03bfee175269960c67cab64d761bbb5eb9ac5878)
-rw-r--r--sys/kern/vfs_subr.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 84219f3b5c12..823b8005aa4d 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -184,8 +184,6 @@ static struct vnode *vnode_list_reclaim_marker;
*/
static long wantfreevnodes;
static long __exclusive_cache_line freevnodes;
-SYSCTL_ULONG(_vfs, OID_AUTO, freevnodes, CTLFLAG_RD,
- &freevnodes, 0, "Number of \"free\" vnodes");
static long freevnodes_old;
static counter_u64_t recycles_count;
@@ -351,6 +349,19 @@ SYSCTL_PROC(_kern, KERN_MAXVNODES, maxvnodes,
"LU", "Target for maximum number of vnodes");
static int
+sysctl_freevnodes(SYSCTL_HANDLER_ARGS)
+{
+ u_long rfreevnodes;
+
+ rfreevnodes = vnlru_read_freevnodes();
+ return (sysctl_handle_long(oidp, &rfreevnodes, 0, req));
+}
+
+SYSCTL_PROC(_vfs, OID_AUTO, freevnodes,
+ CTLTYPE_ULONG | CTLFLAG_MPSAFE | CTLFLAG_RD, NULL, 0, sysctl_freevnodes,
+ "LU", "Number of \"free\" vnodes");
+
+static int
sysctl_wantfreevnodes(SYSCTL_HANDLER_ARGS)
{
u_long val;