git: hammer2 - refactor some chain bits, stabilization
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Sep 2 21:40:32 PDT 2015
commit 3f4ec3cf3c60137ae82230d6581889b4bdc1c12b
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Sep 2 21:11:08 2015 -0700
hammer2 - refactor some chain bits, stabilization
* Refactor the hammer2_chain_t MODIFIED and UPDATE flags to not
reference the chain.
* Automatically flag DESTROY on a chain on last-drop if chain->parent is
NULL, and automatically clear UPDATE and try to clear MODIFY. Add the
chain to the delayed-flush queue if MODIFIED cannot be cleared.
* Fix a flags bug in hammer2_chain_hardlink_find() which could deadlock
competing threads.
* The collect code now aggregates errors and the cluster check code now
also aggregates errors. This allows feeders to feed an error code to
the collector.
* Fix rmdir and rename to disallow removal of non-empty directories.
* hammer2_inode_xop_flush() now proceeds with a flush if hmp->flushq
is not empty, even if the chain is not marked for flushing. This
still needs some work.
* Add a sideq for dirty inodes that might have to be flushed. Used for
unlinked dirty inodes which might still be open.
* Call hammer2_inode_modify() whenever possible instead of setting the
HAMMER2_INODE_MODIFIED flag manually.
* Test for chain leaks against blogbench, fsx, and fsstress.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 8 +-
sys/vfs/hammer2/hammer2_chain.c | 161 +++++++++++++++++++++++++------------
sys/vfs/hammer2/hammer2_cluster.c | 32 ++++++--
sys/vfs/hammer2/hammer2_flush.c | 46 ++++++-----
sys/vfs/hammer2/hammer2_inode.c | 44 +++++-----
sys/vfs/hammer2/hammer2_strategy.c | 6 ++
sys/vfs/hammer2/hammer2_thread.c | 4 +
sys/vfs/hammer2/hammer2_vfsops.c | 18 ++---
sys/vfs/hammer2/hammer2_vnops.c | 8 +-
sys/vfs/hammer2/hammer2_xops.c | 34 +++++++-
10 files changed, 245 insertions(+), 116 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3f4ec3cf3c60137ae82230d6581889b4bdc1c12b
--
DragonFly BSD source repository
More information about the Commits
mailing list