HAMMER 61E/Many: Stabilization, Performance
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 13 Jul 2008 09:32:48 +0000 (09:32 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 13 Jul 2008 09:32:48 +0000 (09:32 +0000)
commit02325004b43a5e9bfeeb63e0112467148d1e4b95
treeb01f677fe9a7c7bb24036826fe9dd53fa0d6d1ea
parentb02a2d9027d8943a36b95ddbf31d2ca368aa7e6f
HAMMER 61E/Many: Stabilization, Performance

* PERFORMANCE: hammer_sync_inode() was generating a new transaction id
  for each inode, causing hammer_btree_do_propagation() to have to
  modify B-Tree nodes all the way to root on a per-file basis when
  syncing a rm -rf.

  Change the code to use the flusher's transaction id so all inodes
  bundled into the same flush group use the same transaction id.

* BUG FIX:  The reblocker was able to blow out the buffer cache with
  dirty data buffers.  Even though HAMMER allows these buffers to be
  flushed to the disk at any time by the kernel, calls to bwillwrite()
  are still needed to prevent a buffer cache deadlock.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_reblock.c