HAMMER 40F/Many: Inode/link-count sequencer cleanup pass, UNDO cache.
commitc41e8f14eb1a6c03278b39ab204fb64770a992ee
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 20:21:20 +0000 (3 20:21 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 3 May 2008 20:21:20 +0000 (3 20:21 +0000)
treefa069449f077d517bbc84a0eb6a62d8624c2126b
parent5cd9615c410ced18cee3bc82397f7e370376a76f
HAMMER 40F/Many: Inode/link-count sequencer cleanup pass, UNDO cache.

* Implement an UNDO cache.  If we have already laid down an UNDO in the
  current flush cycle we do not have to lay down another one for the same
  address.  This greatly reduces the number of UNDOs we generate during
  a flush.

* Properly get the vnode in order to be able to issue vfsync()'s from the
  backend.  We may also have to acquire the vnode when doing an unload
  check for a file deletion.

* Properly generate UNDO records for the volume header.  During crash recovery
  we have to UNDO the volume header along with any partially written
  meta-data, because the volume header refers to the meta-data.

* Add another record type, GENERAL, representing inode or softlink records.

* Move the setting of HAMMER_INODE_WRITE_ALT to the backend, allowing
  the kernel to flush buffers up to the point where the backend syncs
  the inode.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_freemap.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_reblock.c
sys/vfs/hammer/hammer_undo.c
sys/vfs/hammer/hammer_vfsops.c
sys/vfs/hammer/hammer_vnops.c