git: hammer2 hammer2 - Initial media flush implementation

Matthew Dillon dillon at
Mon Feb 13 00:58:41 PST 2012

commit b7926f310b7b7a02b46070c92b13540dd2c482e3
Author: Matthew Dillon <dillon at>
Date:   Mon Feb 13 00:52:21 2012 -0800

    hammer2 - Initial media flush implementation
    * Implement hammer2_chain_flush(), hammer2_vfs_sync(), and hammer2_vop_fsync().
      The flush code currently handles inodes but not data.
    * hammer2_chain_flush() recursively flushes a chain structure, handing the
      parent the updated blockref.  When flushing downward pending chain elements
      will allocate new blocks for copy-on-write.
    * Survives mount/mkdir/umount/mount
    NOTES: fsync currently stops at the inode and does not currently flush
           through to the volume root.  We need to implement a short-cut for
           fsync using currently reserved volume header fields to avoid having
           to flush out the entire chain.
           We haven't implemented data blocks yet.

Summary of changes:
 sys/vfs/hammer2/hammer2.h         |   14 +-
 sys/vfs/hammer2/hammer2_chain.c   |  387 ++++++++++++++++++++++++++++++++++---
 sys/vfs/hammer2/hammer2_freemap.c |    4 +
 sys/vfs/hammer2/hammer2_vfsops.c  |  137 +++++++++++---
 sys/vfs/hammer2/hammer2_vnops.c   |   21 ++-
 5 files changed, 506 insertions(+), 57 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list