kernel - Fix indefinite wait buffer during heavy swapping
commit10c39de26c1356d088f2dbaa5809e1289062641d
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 5 Sep 2016 19:33:42 +0000 (5 12:33 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 5 Sep 2016 19:33:42 +0000 (5 12:33 -0700)
tree461bd4db62a93ebc08ba5dfecc2a51be7ecefbc0
parent295428701a38864138373ee27033fb7a9fc09814
kernel - Fix indefinite wait buffer during heavy swapping

* Fix a deadlock which can occur between CAM and the VM system due to
  a bug in uiomove_nofault() when called via vop_helper_read_shortcut().

  If the backing store is swapped out, vm_fault()/vm_fault_object() attempts
  to page the data in instead of telling uiomove_nofault() to give up.
  This can result in a deadlock against the underlying vm_page's in the
  file that might already be undergoing I/O.

* Probably also reported by other people over the years, but could never
  track it down until now.

Reported-by: Studbolt
sys/vm/vm_fault.c