HAMMER 40D/Many: Inode/link-count sequencer cleanup pass.
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 05:28:55 +0000 (05:28 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 05:28:55 +0000 (05:28 +0000)
commit4e17f4657577ceed5625f8c8ef5e1d0885645ead
treef142f3bba6b37a6ad3063692138bd4cbcb95912f
parent0728a53400ed12a3763635ff18f639a1692f10af
HAMMER 40D/Many: Inode/link-count sequencer cleanup pass.

* Move the vfsync from the frontend to the backend.  This allows the
  frontend to passively move inodes to the backend without having to
  actually start the flush, greatly improving performance.

* Use an inode lock to deal with directory entry syncing races between
  the frontend and the backend.  It isn't optimal but it's ok for now.

* Massively optimize the backend code by initializing a single cursor
  for an inode and passing the cursor to procedures, instead of having
  each procedure initialize its own cursor.

* Fix a sequencing issue with the backend.  While building the flush
  state for an inode another process could get in and initiate its own
  flush, screwing up the flush group and creating confusion.
  (hmp->flusher_lock)

* Don't lose track of HAMMER_FLUSH_SIGNAL flush requests.  If we get
  such a requet but have to flag a reflush, also flag that the reflush
  is to be signaled (done immediately when the current flush is done).

* Remove shared inode locks from hammer_vnops.c.  Their original purpose
  no longer exists.

* Simplify the arguments passed to numerous procedures (hammer_ip_first(),
  etc).
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_blockmap.c
sys/vfs/hammer/hammer_cursor.c
sys/vfs/hammer/hammer_cursor.h
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_freemap.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_ioctl.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_reblock.c
sys/vfs/hammer/hammer_vnops.c