HAMMER VFS - REDO implementation base code part 1/many
authorMatthew Dillon <dillon@apollo.backplane.com>
Sun, 10 Jan 2010 04:03:06 +0000 (20:03 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 10 Jan 2010 04:03:06 +0000 (20:03 -0800)
commit9192654c99abc28aca5b0eda1ad94ddb65ef735d
treeecae79704467599f0cbcdaad441b6addf746d1bc
parent6367d0f9e6eb5da3982f7a502d5c999407a6101b
HAMMER VFS - REDO implementation base code part 1/many

* Implement basic REDO record writing and fsync heuristic in order to
  test operation and performance.  Note that the recovery code is not
  implemented as of this commit and additional REDO records will probably
  have to be written to manage the span.

  There was no easy way to place all REDOs in a single UNDO/REDO FIFO span
  because the span is not known until the inode's meta-data is actually
  flushed.  We can control the flush to ensure that all required REDOs
  are present in the UNDO/REDO FIFO.  So what we will likely do is track
  the span with additional REDO records.

* Redo vfs.hammmer.fsync_mode:
0 REDO disabled, synchronous fsync semantics (default)
1 REDO disabled, asynchronous fsync semantics
2 REDO enabled, synchronous  (uses disk sync command)
3 REDO enabled, asynchronous (no disk sync command)
4 fsync is ignored

* Refactor hammer_flusher_flush_undos()

* Default operation is to disable the new features as they are not
  finished yet.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_vnops.c