kernel - Fix NFS server deadlock
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 27 Sep 2010 15:15:31 +0000 (08:15 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 27 Sep 2010 15:15:31 +0000 (08:15 -0700)
commitb8587f8c68a1a39ba3e0175b3c228b1431a133f8
treedb98910bed3807a757c0061805317a924cb68982
parent38e23cc2e85058f392e08a8729cd74f16780cd4c
kernel - Fix NFS server deadlock

* _cache_cleanneg() was calling cache_zap() with the non-blocking argument
  set to FALSE, causing numerous out-of-order locking situations which
  could march up the topology and cause a deadlock.

  Fixed by calling cache_zap() with the non-blocking argument set to TRUE.

* This was particularly obvious when running a buildworld with a loopback
  NFS mount for /usr/obj, which generates lots of negative cache activity,
  but theoretically could cause deadlocks even without using NFS.

Reported-by: YONETANI Tomokazu <qhwt.dfly@les.ath.cx>
sys/kern/vfs_cache.c