git: 6d95a66f1b53 - stable/13 - vm_object: Make is_object_active() global

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Wed, 09 Feb 2022 00:43:33 UTC
The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=6d95a66f1b538996f6c43710ce1fde903928d85f

commit 6d95a66f1b538996f6c43710ce1fde903928d85f
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2021-12-20 00:11:44 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-02-09 00:42:44 +0000

    vm_object: Make is_object_active() global
    
    (cherry picked from commit cd37afd8b6ddc38fe2441e37a8bf5f8cdce50bc6)
---
 sys/vm/vm_meter.c  | 19 ++-----------------
 sys/vm/vm_object.c | 15 +++++++++++++++
 sys/vm/vm_object.h |  1 +
 3 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c
index 44d3ac999c5a..15afd1f23649 100644
--- a/sys/vm/vm_meter.c
+++ b/sys/vm/vm_meter.c
@@ -142,21 +142,6 @@ SYSCTL_PROC(_vm, VM_LOADAVG, loadavg, CTLTYPE_STRUCT | CTLFLAG_RD |
     CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_loadavg, "S,loadavg",
     "Machine loadaverage history");
 
-/*
- * This function aims to determine if the object is mapped,
- * specifically, if it is referenced by a vm_map_entry.  Because
- * objects occasionally acquire transient references that do not
- * represent a mapping, the method used here is inexact.  However, it
- * has very low overhead and is good enough for the advisory
- * vm.vmtotal sysctl.
- */
-static bool
-is_object_active(vm_object_t obj)
-{
-
-	return (obj->ref_count > obj->shadow_count);
-}
-
 #if defined(COMPAT_FREEBSD11)
 struct vmtotal11 {
 	int16_t	t_rq;
@@ -268,7 +253,7 @@ vmtotal(SYSCTL_HANDLER_ARGS)
 		}
 		total.t_vm += object->size;
 		total.t_rm += object->resident_page_count;
-		if (is_object_active(object)) {
+		if (vm_object_is_active(object)) {
 			total.t_avm += object->size;
 			total.t_arm += object->resident_page_count;
 		}
@@ -276,7 +261,7 @@ vmtotal(SYSCTL_HANDLER_ARGS)
 			/* shared object */
 			total.t_vmshr += object->size;
 			total.t_rmshr += object->resident_page_count;
-			if (is_object_active(object)) {
+			if (vm_object_is_active(object)) {
 				total.t_avmshr += object->size;
 				total.t_armshr += object->resident_page_count;
 			}
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index cc4463567aae..7bc503f7afdf 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -2498,6 +2498,21 @@ vm_object_busy_wait(vm_object_t obj, const char *wmesg)
 	(void)blockcount_sleep(&obj->busy, NULL, wmesg, PVM);
 }
 
+/*
+ * This function aims to determine if the object is mapped,
+ * specifically, if it is referenced by a vm_map_entry.  Because
+ * objects occasionally acquire transient references that do not
+ * represent a mapping, the method used here is inexact.  However, it
+ * has very low overhead and is good enough for the advisory
+ * vm.vmtotal sysctl.
+ */
+bool
+vm_object_is_active(vm_object_t obj)
+{
+
+	return (obj->ref_count > obj->shadow_count);
+}
+
 static int
 vm_object_list_handler(struct sysctl_req *req, bool swap_only)
 {
diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h
index 2a16d8c6f096..903c85261254 100644
--- a/sys/vm/vm_object.h
+++ b/sys/vm/vm_object.h
@@ -391,6 +391,7 @@ boolean_t vm_object_sync(vm_object_t, vm_ooffset_t, vm_size_t, boolean_t,
 void vm_object_unwire(vm_object_t object, vm_ooffset_t offset,
     vm_size_t length, uint8_t queue);
 struct vnode *vm_object_vnode(vm_object_t object);
+bool vm_object_is_active(vm_object_t obj);
 #endif				/* _KERNEL */
 
 #endif				/* _VM_OBJECT_ */