HAMMER - Rework write pipelining
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Aug 2009 20:54:29 +0000 (13:54 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 19 Aug 2009 20:58:57 +0000 (13:58 -0700)
commitde996e865902051a4e8e4945e7116be8850f871c
tree7317992cea5e024408456ef993fee66b25b66165
parent3acd1e883b9ce279d967c66bda68abdc227aeef2
HAMMER - Rework write pipelining

* Rework write pipelining so it is based on pending direct writes on an
  inode-by-inode basis.  ip->rsv_recs and hmp->rsv_recs are now
  decremented after the direct has completed rather then when the sync
  code has processed the record.

  This fixes serious buffer cache overloading when doing linear writes.

* Implement write clustering or bawrite() calls based on a filesystem
  block getting filled up instead of relying on the buffer cache's bdwrite()
  to keep ahead of the mark.

* vfs.hammer.cluster_enable now effects both read and write clustering.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_vfsops.c
sys/vfs/hammer/hammer_vnops.c