svn commit: r323982 - head/sys/vm
Alan Cox
alc at FreeBSD.org
Sun Sep 24 23:35:02 UTC 2017
Author: alc
Date: Sun Sep 24 23:35:01 2017
New Revision: 323982
URL: https://svnweb.freebsd.org/changeset/base/323982
Log:
Change vm_page_try_to_free() to require a managed page. Essentially,
vm_page_try_to_free() is testing conditions, like clean versus dirty,
that only vary in managed pages.
Suggested by: kib
Reviewed by: markj
X-MFC after: never
Modified:
head/sys/vm/vm_page.c
Modified: head/sys/vm/vm_page.c
==============================================================================
--- head/sys/vm/vm_page.c Sun Sep 24 22:29:11 2017 (r323981)
+++ head/sys/vm/vm_page.c Sun Sep 24 23:35:01 2017 (r323982)
@@ -3078,22 +3078,23 @@ vm_page_unswappable(vm_page_t m)
}
/*
- * vm_page_try_to_free()
+ * Attempt to free the page. If it cannot be freed, do nothing. Returns true
+ * if the page is freed and false otherwise.
*
- * Attempt to free the page. If we cannot free it, we do nothing.
- * true is returned on success, false on failure.
+ * The page must be managed. The page and its containing object must be
+ * locked.
*/
bool
vm_page_try_to_free(vm_page_t m)
{
vm_page_assert_locked(m);
- if (m->object != NULL)
- VM_OBJECT_ASSERT_WLOCKED(m->object);
+ VM_OBJECT_ASSERT_WLOCKED(m->object);
+ KASSERT((m->oflags & VPO_UNMANAGED) == 0, ("page %p is unmanaged", m));
if (m->dirty != 0 || m->hold_count != 0 || m->wire_count != 0 ||
- (m->oflags & VPO_UNMANAGED) != 0 || vm_page_busied(m))
+ vm_page_busied(m))
return (false);
- if (m->object != NULL && m->object->ref_count != 0) {
+ if (m->object->ref_count != 0) {
pmap_remove_all(m);
if (m->dirty != 0)
return (false);
More information about the svn-src-head
mailing list