HAMMER 40D/Many: Inode/link-count sequencer cleanup pass.
commit3e1e60a63ac64ba2ae150fdfdf4a81b1460b140e
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 05:28:55 +0000 (3 05:28 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 05:28:55 +0000 (3 05:28 +0000)
treebee9aab5ddaab51ea54691fdb8e34c687ec83a98
parent1bb6319c945b018c58c37e069ee2be4991f8053e
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