aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_object.h
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2016-06-21 17:49:33 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2016-06-21 17:49:33 +0000
commitd3b9828d0d5c375d438e6a76493640c4b018e7a1 (patch)
treeaae128bb7be590a4e5932a9f3331886af64947a3 /sys/vm/vm_object.h
parent4f5ec72aa42401b2a7663df78d9d5c440542daec (diff)
downloadsrc-d3b9828d0d5c375d438e6a76493640c4b018e7a1.tar.gz
src-d3b9828d0d5c375d438e6a76493640c4b018e7a1.zip
The vmtotal sysctl handler marks active vm objects to calculate
statistics. Marking is done by setting the OBJ_ACTIVE flag. The flags change is locked, but the problem is that many parts of system assume that vm object initialization ensures that no other code could change the object, and thus performed lockless. The end result is corrupted flags in vm objects, most visible is spurious OBJ_DEAD flag, causing random hangs. Avoid the active object marking, instead provide equally inexact but immutable is_object_alive() definition for the object mapped state. Avoid iterating over the processes mappings altogether by using arguably improved definition of the paging thread as one which sleeps on the v_free_count. PR: 204764 Diagnosed by: pho Tested by: pho (previous version) Reviewed by: alc Sponsored by: The FreeBSD Foundation MFC after: 1 week Approved by: re (gjb)
Notes
Notes: svn path=/head/; revision=302063
Diffstat (limited to 'sys/vm/vm_object.h')
-rw-r--r--sys/vm/vm_object.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h
index cfc583b8db01..73998aae8434 100644
--- a/sys/vm/vm_object.h
+++ b/sys/vm/vm_object.h
@@ -182,7 +182,6 @@ struct vm_object {
*/
#define OBJ_FICTITIOUS 0x0001 /* (c) contains fictitious pages */
#define OBJ_UNMANAGED 0x0002 /* (c) contains unmanaged pages */
-#define OBJ_ACTIVE 0x0004 /* active objects */
#define OBJ_DEAD 0x0008 /* dead objects (during rundown) */
#define OBJ_NOSPLIT 0x0010 /* dont split this object */
#define OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */