git: hammer2 - Stabilization
dillon at crater.dragonflybsd.org
Mon Aug 28 16:24:55 PDT 2017
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Mon Aug 28 10:30:24 2017 -0700
hammer2 - Stabilization
* Key test in hammer2_chain_lookup() against DELETED chains no longer
special-caes a FREEMAP_NODE when trying to find the covering parent
chain for the range.
* hammer2_chain_create_indirect() now re-tests that chain->parent still
matches parent after obtaining the locked chain. There shouldn't be
a race here, but check anyway.
* Do not try to delete empty indirect nodes in the flush code unless
the chain's sub-tree is also empty. Fixes a possible race condition
on an indirect chain vs the kernel writing buffer cache buffers out.
I was also concerned about indirect chains in the INITIAL state tripping
up the test.
* re-test inode flags after inode lock prior to calling
hammer2_inode_chain_sync() as a simple optimization.
Summary of changes:
sys/vfs/hammer2/hammer2_chain.c | 13 ++++++++-----
sys/vfs/hammer2/hammer2_flush.c | 5 ++++-
sys/vfs/hammer2/hammer2_freemap.c | 4 ++--
sys/vfs/hammer2/hammer2_vfsops.c | 5 ++++-
4 files changed, 18 insertions(+), 9 deletions(-)
DragonFly BSD source repository
More information about the Commits