git: 0cb2610ee2dc - main - vm: Remove handling for OBJT_DEFAULT objects

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Sun, 17 Jul 2022 11:24:18 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=0cb2610ee2dccfde2e385f8e8a10d0b8d6bc0687

commit 0cb2610ee2dccfde2e385f8e8a10d0b8d6bc0687
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2022-07-16 15:29:19 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2022-07-17 11:09:48 +0000

    vm: Remove handling for OBJT_DEFAULT objects
    
    Now that OBJT_DEFAULT objects can't be instantiated, we can simplify
    checks of the form object->type == OBJT_DEFAULT || (object->flags &
    OBJ_SWAP) != 0.  No functional change intended.
    
    Reviewed by:    alc, kib
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D35788
---
 sys/vm/vm_fault.c   |  3 +--
 sys/vm/vm_map.c     | 12 ++----------
 sys/vm/vm_mmap.c    |  6 ++----
 sys/vm/vm_object.c  | 16 +++-------------
 sys/vm/vm_page.c    |  6 ++----
 sys/vm/vm_pageout.c | 10 +++-------
 6 files changed, 13 insertions(+), 40 deletions(-)

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index d398be941e84..0433b6dd3d7e 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -2040,8 +2040,7 @@ vm_fault_copy_entry(vm_map_t dst_map, vm_map_t src_map __unused,
 		dst_object->cred = curthread->td_ucred;
 		crhold(dst_object->cred);
 		*fork_charge += dst_object->charge;
-	} else if ((dst_object->type == OBJT_DEFAULT ||
-	    (dst_object->flags & OBJ_SWAP) != 0) &&
+	} else if ((dst_object->flags & OBJ_SWAP) != 0 &&
 	    dst_object->cred == NULL) {
 		KASSERT(dst_entry->cred != NULL, ("no cred for entry %p",
 		    dst_entry));
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 7e528fae7453..04310e42218f 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2825,8 +2825,7 @@ again:
 		}
 
 		VM_OBJECT_WLOCK(obj);
-		if (obj->type != OBJT_DEFAULT &&
-		    (obj->flags & OBJ_SWAP) == 0) {
+		if ((obj->flags & OBJ_SWAP) == 0) {
 			VM_OBJECT_WUNLOCK(obj);
 			continue;
 		}
@@ -4136,14 +4135,7 @@ vm_map_copy_entry(
 		 */
 		size = src_entry->end - src_entry->start;
 		if ((src_object = src_entry->object.vm_object) != NULL) {
-			/*
-			 * Swap-backed objects need special handling.  Note that
-			 * this is an unlocked check, so it is possible to race
-			 * with an OBJT_DEFAULT -> OBJT_SWAP conversion.
-			 */
-			if (src_object->type == OBJT_DEFAULT ||
-			    src_object->type == OBJT_SWAP ||
-			    (src_object->flags & OBJ_SWAP) != 0) {
+			if ((src_object->flags & OBJ_SWAP) != 0) {
 				vm_map_copy_swap_object(src_entry, dst_entry,
 				    size, fork_charge);
 				/* May have split/collapsed, reload obj. */
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 1c02ba35fcfe..56345fcaf560 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -940,8 +940,7 @@ retry:
 					object = current->object.vm_object;
 					VM_OBJECT_WLOCK(object);
 				}
-				if (object->type == OBJT_DEFAULT ||
-				    (object->flags & OBJ_SWAP) != 0 ||
+				if ((object->flags & OBJ_SWAP) != 0 ||
 				    object->type == OBJT_VNODE) {
 					pindex = OFF_TO_IDX(current->offset +
 					    (addr - current->start));
@@ -1368,8 +1367,7 @@ vm_mmap_vnode(struct thread *td, vm_size_t objsize,
 			goto done;
 		}
 	} else {
-		KASSERT(obj->type == OBJT_DEFAULT || obj->type == OBJT_SWAP ||
-		    (obj->flags & OBJ_SWAP) != 0, ("wrong object type"));
+		KASSERT((obj->flags & OBJ_SWAP) != 0, ("wrong object type"));
 		vm_object_reference(obj);
 #if VM_NRESERVLEVEL > 0
 		if ((obj->flags & OBJ_COLORED) == 0) {
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index bb29568ab5e4..7fd82239c13b 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -414,9 +414,6 @@ vm_object_allocate(objtype_t type, vm_pindex_t size)
 	switch (type) {
 	case OBJT_DEAD:
 		panic("vm_object_allocate: can't create OBJT_DEAD");
-	case OBJT_DEFAULT:
-		flags = OBJ_COLORED;
-		break;
 	case OBJT_SWAP:
 		flags = OBJ_COLORED | OBJ_SWAP;
 		break;
@@ -688,8 +685,7 @@ vm_object_deallocate(vm_object_t object)
 		umtx_shm_object_terminated(object);
 		temp = object->backing_object;
 		if (temp != NULL) {
-			KASSERT(object->type == OBJT_DEFAULT ||
-			    object->type == OBJT_SWAP,
+			KASSERT(object->type == OBJT_SWAP,
 			    ("shadowed tmpfs v_object 2 %p", object));
 			vm_object_backing_remove(object);
 		}
@@ -969,8 +965,7 @@ vm_object_terminate(vm_object_t object)
 		vm_reserv_break_all(object);
 #endif
 
-	KASSERT(object->cred == NULL || object->type == OBJT_DEFAULT ||
-	    (object->flags & OBJ_SWAP) != 0,
+	KASSERT(object->cred == NULL || (object->flags & OBJ_SWAP) != 0,
 	    ("%s: non-swap obj %p has cred", __func__, object));
 
 	/*
@@ -1306,8 +1301,7 @@ vm_object_madvise_freespace(vm_object_t object, int advice, vm_pindex_t pindex,
  *
  *	    Deactivate the specified pages if they are resident.
  *
- *	MADV_FREE	(OBJT_DEFAULT/OBJT_SWAP objects,
- *			 OBJ_ONEMAPPING only)
+ *	MADV_FREE	(OBJT_SWAP objects, OBJ_ONEMAPPING only)
  *
  *	    Deactivate and clean the specified pages if they are
  *	    resident.  This permits the process to reuse the pages
@@ -1529,10 +1523,6 @@ vm_object_split(vm_map_entry_t entry)
 	offidxstart = OFF_TO_IDX(entry->offset);
 	size = atop(entry->end - entry->start);
 
-	/*
-	 * If swap_pager_copy() is later called, it will convert new_object
-	 * into a swap object.
-	 */
 	new_object = vm_object_allocate_anon(size, orig_object,
 	    orig_object->cred, ptoa(size));
 
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 127406c0d582..cb7ce428db28 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -2693,8 +2693,7 @@ retry:
 				goto retry;
 			}
 			/* Don't care: PG_NODUMP, PG_ZERO. */
-			if (object->type != OBJT_DEFAULT &&
-			    (object->flags & OBJ_SWAP) == 0 &&
+			if ((object->flags & OBJ_SWAP) == 0 &&
 			    object->type != OBJT_VNODE) {
 				run_ext = 0;
 #if VM_NRESERVLEVEL > 0
@@ -2831,8 +2830,7 @@ vm_page_reclaim_run(int req_class, int domain, u_long npages, vm_page_t m_run,
 			VM_OBJECT_WLOCK(object);
 			/* Don't care: PG_NODUMP, PG_ZERO. */
 			if (m->object != object ||
-			    (object->type != OBJT_DEFAULT &&
-			    (object->flags & OBJ_SWAP) == 0 &&
+			    ((object->flags & OBJ_SWAP) == 0 &&
 			    object->type != OBJT_VNODE))
 				error = EINVAL;
 			else if (object->memattr != VM_MEMATTR_DEFAULT)
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 74439d5884ef..bb12a7e335d5 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -896,11 +896,8 @@ free_page:
 			vm_page_free(m);
 			VM_CNT_INC(v_dfree);
 		} else if ((object->flags & OBJ_DEAD) == 0) {
-			if ((object->flags & OBJ_SWAP) == 0 &&
-			    object->type != OBJT_DEFAULT)
-				pageout_ok = true;
-			else if (disable_swap_pageouts)
-				pageout_ok = false;
+			if ((object->flags & OBJ_SWAP) != 0)
+				pageout_ok = disable_swap_pageouts == 0;
 			else
 				pageout_ok = true;
 			if (!pageout_ok) {
@@ -1886,8 +1883,7 @@ vm_pageout_oom_pagecount(struct vmspace *vmspace)
 		if ((entry->eflags & MAP_ENTRY_NEEDS_COPY) != 0 &&
 		    obj->ref_count != 1)
 			continue;
-		if (obj->type == OBJT_DEFAULT || obj->type == OBJT_SWAP ||
-		    obj->type == OBJT_PHYS || obj->type == OBJT_VNODE ||
+		if (obj->type == OBJT_PHYS || obj->type == OBJT_VNODE ||
 		    (obj->flags & OBJ_SWAP) != 0)
 			res += obj->resident_page_count;
 	}