HAMMER: Fix a couple of minor non-corrupting bugs in HAMMER.
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 21 Sep 2008 02:58:31 +0000 (02:58 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 21 Sep 2008 02:58:31 +0000 (02:58 +0000)
commitb424ca3013b04b65f5c901cda5fa8593384b340a
treef92557ba98e6583e2e2011b43e68e268f788b048
parentf3e0b5f0df98c76446e71ed114439f2ad9399169
HAMMER: Fix a couple of minor non-corrupting bugs in HAMMER.

* Fix a few cases where the kmalloc space for hammer inodes can become
  exhausted.  Add calls to hammer_inode_waitreclaims() in several places
  where modified inodes can build up without the related vnodes
  necessarily being VOP_OPEN()'d or VOP_CLOSE()'d.

* Fix a deadlock which can occur in fsync().  fsync() was holding the vnode
  lock while waiting for the inode to sync.  The inode sync can be held up
  indefinitely by dependancies on other vnodes, so holding the lock can
  result in a deadlock.

* Fix a bug where ap->a_ctllen test results were being ignored.  This
  path is only used by mountd.

Reported-by: Francois Tigeot <ftigeot@wolfpond.org>,
Damian Lubosch <dl@pless.xiqit.de>
sys/vfs/hammer/hammer_vnops.c