kernel - Fix deadlock w/recent vm_map work
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 11 Aug 2011 21:38:09 +0000 (14:38 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 11 Aug 2011 21:38:09 +0000 (14:38 -0700)
commit625a293762660fd6f8474c36683a1aeed85b71ba
tree729a4e505a0f5d90ccd100be7187a2ab114e18a2
parent175660922b2422bdda81a5967c5dadd176fe1c3c
kernel - Fix deadlock w/recent vm_map work

* Fix a deadlock where a vm_page is being held PG_BUSY throgh a vm_map
  relocking operation.  This can deadlock against the attempt to busy
  a vm_page while holding a vm_map lock.

* The solution is a bit of a hack.  Currently allow the relock attempt to
  timeout and force a retry of the VM fault, which unlocks and relocks
  everything.  This is not the best solution but the problem occurs
  fairly rarely so for now it should be an acceptable workaround.

Reported-by: ftigeot, Studbolt
sys/vm/vm_fault.c
sys/vm/vm_map.c
sys/vm/vm_map.h