Author: alc
Date: Mon May 28 04:38:10 2018
New Revision: 334274
URL: https://svnweb.freebsd.org/changeset/base/334274

Log:
  Eliminate duplicate assertions.  We assert at the start of vm_fault_hold()
  that the map entry is wired if the caller passes the flag VM_FAULT_WIRE.
  Eliminate the same assertion, but spelled differently, at the end of
  vm_fault_hold() and vm_fault_populate().  Repeat the assertion only if the
  map is unlocked and the map lookup must be repeated.
  
  Reviewed by:  kib
  MFC after:    10 days
  Differential Revision:        https://reviews.freebsd.org/D15582

Modified:
  head/sys/vm/vm_fault.c

Modified: head/sys/vm/vm_fault.c
==============================================================================
--- head/sys/vm/vm_fault.c      Mon May 28 03:14:36 2018        (r334273)
+++ head/sys/vm/vm_fault.c      Mon May 28 04:38:10 2018        (r334274)
@@ -482,10 +482,9 @@ vm_fault_populate(struct faultstate *fs, vm_prot_t pro
                m_mtx = NULL;
                for (i = 0; i < npages; i++) {
                        vm_page_change_lock(&m[i], &m_mtx);
-                       if ((fault_flags & VM_FAULT_WIRE) != 0) {
-                               KASSERT(wired, ("VM_FAULT_WIRE && !wired"));
+                       if ((fault_flags & VM_FAULT_WIRE) != 0)
                                vm_page_wire(&m[i]);
-                       } else
+                       else
                                vm_page_activate(&m[i]);
                        if (m_hold != NULL && m[i].pindex == fs->first_pindex) {
                                *m_hold = &m[i];
@@ -1247,6 +1246,10 @@ readrest:
                                unlock_and_deallocate(&fs);
                                goto RetryFault;
                        }
+
+                       /* Reassert because wired may have changed. */
+                       KASSERT(wired || (fault_flags & VM_FAULT_WIRE) == 0,
+                           ("!wired && VM_FAULT_WIRE"));
                }
        }
 
@@ -1290,10 +1293,9 @@ readrest:
         * If the page is not wired down, then put it where the pageout daemon
         * can find it.
         */
-       if ((fault_flags & VM_FAULT_WIRE) != 0) {
-               KASSERT(wired, ("VM_FAULT_WIRE && !wired"));
+       if ((fault_flags & VM_FAULT_WIRE) != 0)
                vm_page_wire(fs.m);
-       } else
+       else
                vm_page_activate(fs.m);
        if (m_hold != NULL) {
                *m_hold = fs.m;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to