git: hammer2 - Stabilization pass, more flush refactoring
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Oct 31 23:08:58 PDT 2013
commit a4dc31e022f821212e65d95b025bca4d77c73ca6
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Oct 31 22:57:55 2013 -0700
hammer2 - Stabilization pass, more flush refactoring
* Add voldata.inode_tid, separate inode TID allocations from
transaction TID allocations in voldata.
* Rewrite the transaction management functions.
* Rewrite hammer2's filesystem sync code to reduce stalls.
* Keep track of a generation number on the hammer2_chain_core structure
so the flush code can re-scan when it modifies elements within the
flush transaction.
* Cleanup the duplication and delete-duplication code and hardlink handling.
The delete-duplication code now properly tags delete_tid when a flush is
delete-duplicating a chain which is deleted in the live view but is still
valid in the flush view.
* Correct numerous bugs in tracking the modified/deleted state of
a chain.
* Correct numerous flush bugs.
* Separate the mirror TID for the freemap chain from the volume chain.
This will allow freemap updates to be delayed.
* Implement a more stringent algorithm to determine when CHAIN_MOVED
can be cleared in chain->flags.
* Do a better job limiting the flush scan when concurrent modifying
operations are occuring in large volumes.
Summary of changes:
sbin/newfs_hammer2/newfs_hammer2.c | 3 +-
sys/vfs/hammer2/hammer2.h | 16 +-
sys/vfs/hammer2/hammer2_chain.c | 447 +++++++++++++++++---------------
sys/vfs/hammer2/hammer2_disk.h | 6 +-
sys/vfs/hammer2/hammer2_flush.c | 504 +++++++++++++++++++------------------
sys/vfs/hammer2/hammer2_freemap.c | 27 +-
sys/vfs/hammer2/hammer2_inode.c | 17 +-
sys/vfs/hammer2/hammer2_ioctl.c | 4 +-
sys/vfs/hammer2/hammer2_vfsops.c | 57 ++---
sys/vfs/hammer2/hammer2_vnops.c | 27 +-
10 files changed, 600 insertions(+), 508 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a4dc31e022f821212e65d95b025bca4d77c73ca6
--
DragonFly BSD source repository
More information about the Commits
mailing list