Author: kib
Date: Fri Dec 29 20:33:56 2017
New Revision: 327359
URL: https://svnweb.freebsd.org/changeset/base/327359

Log:
  Do not lock vm map in swapout_procs().
  
  Neither swapout_procs() nor swapout() access the map.  Since the
  process' vmspace is referenced only to obtain the pointer to the
  vm_map, the reference is not needed as well.
  
  Reviewed by:  alc
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week
  Differential revision:        https://reviews.freebsd.org/D13681

Modified:
  head/sys/vm/vm_swapout.c

Modified: head/sys/vm/vm_swapout.c
==============================================================================
--- head/sys/vm/vm_swapout.c    Fri Dec 29 20:30:10 2017        (r327358)
+++ head/sys/vm/vm_swapout.c    Fri Dec 29 20:33:56 2017        (r327359)
@@ -729,7 +729,6 @@ swapout_procs(int action)
 {
        struct proc *p;
        struct thread *td;
-       struct vmspace *vm;
        int minslptime, slptime;
        bool didswap;
 
@@ -763,24 +762,6 @@ retry:
                PROC_UNLOCK(p);
                sx_sunlock(&allproc_lock);
 
-               /*
-                * Do not swapout a process that
-                * is waiting for VM data
-                * structures as there is a possible
-                * deadlock.  Test this first as
-                * this may block.
-                *
-                * Lock the map until swapout
-                * finishes, or a thread of this
-                * process may attempt to alter
-                * the map.
-                */
-               vm = vmspace_acquire_ref(p);
-               if (vm == NULL)
-                       goto nextproc2;
-               if (!vm_map_trylock(&vm->vm_map))
-                       goto nextproc1;
-
                PROC_LOCK(p);
                if (p->p_lock != 1 || (p->p_flag & (P_STOPPED_SINGLE |
                    P_TRACED | P_SYSTEM)) != 0)
@@ -867,17 +848,11 @@ retry:
                                if (swapout(p) == 0)
                                        didswap = true;
                                PROC_UNLOCK(p);
-                               vm_map_unlock(&vm->vm_map);
-                               vmspace_free(vm);
                                goto retry;
                        }
                }
 nextproc:
                PROC_UNLOCK(p);
-               vm_map_unlock(&vm->vm_map);
-nextproc1:
-               vmspace_free(vm);
-nextproc2:
                sx_slock(&allproc_lock);
                PRELE(p);
        }
_______________________________________________
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