git: hammer2 - stabilization, sequencing
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Aug 27 23:26:54 PDT 2015
commit 21a904588eeea78c4050292c4c477f008a38784f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Aug 27 23:15:17 2015 -0700
hammer2 - stabilization, sequencing
* Change the way XOPs are dispatched. Instead of dispatching a XOP
to specific service threads in the xgrp we now queue the XOP to a
per-cluster-node xopq and allow the service threads to compete for
work.
* Implement XOP dependency tracking. Cluster nodes can complete execution
of a XOP in any order and the frontend may complete early on-quorum while
the XOP is still executing on other cluster nodes. In this situation
the inode lock may be released or cycled and another, dependent XOP may
be issued, potentially executing out of order on the cluster nodes that
have not yet finished (or possibly even started) the previous XOP.
With the new queueing mechanism we also implement dependency tracking
using the xop->ip1, ip2, and ip3 fields. Dependent XOPs on (slow) cluster
nodes will be held-back and ordering of dependent XOPS will be enforced.
This fixes one of several cluster-related issues that will need to be
addressed in order to free the frontend of slow backend cluster nodes.
* The strategy XOP now uses a per-XOP lock instead of an xgrp lock
(xgrp is no longer used in the xop structure and XOPs are now
distributed to potentially different xgrps for each cluster node).
* Normalize some structural field names.
* bulkfree now takes a snapshot of vchain, using a separate (temporary)
chain structure which isolates the entire topology scan from the
live filesystem.
This required minor adjustments to base/count handling for
HAMMER2_BREF_TYPE_VOLUME and HAMMER2_BREF_TYPE_FREEMAP.
* Debugging adjustments.
Summary of changes:
sys/vfs/hammer2/TODO | 4 +
sys/vfs/hammer2/hammer2.h | 23 ++--
sys/vfs/hammer2/hammer2_bulkscan.c | 65 ++++++++---
sys/vfs/hammer2/hammer2_chain.c | 87 ++++++++++++---
sys/vfs/hammer2/hammer2_disk.h | 1 +
sys/vfs/hammer2/hammer2_flush.c | 4 +-
sys/vfs/hammer2/hammer2_inode.c | 37 ++++---
sys/vfs/hammer2/hammer2_ioctl.c | 8 +-
sys/vfs/hammer2/hammer2_strategy.c | 27 ++---
sys/vfs/hammer2/hammer2_thread.c | 217 ++++++++++++++++++++++++++++++-------
sys/vfs/hammer2/hammer2_vfsops.c | 8 ++
sys/vfs/hammer2/hammer2_vnops.c | 16 ++-
sys/vfs/hammer2/hammer2_xops.c | 38 +++----
13 files changed, 408 insertions(+), 127 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/21a904588eeea78c4050292c4c477f008a38784f
--
DragonFly BSD source repository
More information about the Commits
mailing list