git: hammer2 - refactor filesystem sync 6/N
dillon at crater.dragonflybsd.org
Wed Dec 5 14:29:28 PST 2018
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Dec 2 12:39:48 2018 -0800
hammer2 - refactor filesystem sync 6/N
* Dependency tracking. Add modest cross-dependency grouping. This code
does not track dependencies in a graph. Instead, it simply groups
dependent inodes together. This means that dependency groups can get
rather large when, for example, lots of files are being created or
deleted in the same directory.
* We retain the excellent dynamic inode reordering code for the syncq.
When the frontend blocks on an inode that is in the syncq, the inode
will be reordered to the front of the queue to reduce the frontend
stall time as much as possible.
* Remove the COPYQ transaction flag and related sequencing.
* Fix flush sequencing for pmp->iroot. We must flush iroot's chains with
HAMMER2_XOP_FSSYNC last. When iroot is dirty, the out-of-order flush
of iroot that occurs before the final stage must be run without FSSYNC
set, otherwise iroot's pmp->pfs_iroot_blocksets will not be consistent
because the remaining inodes in the syncq haven't been flushed yet.
* Fix a broken syncer speedup conditional.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 29 ++++-
sys/vfs/hammer2/hammer2_flush.c | 35 ++---
sys/vfs/hammer2/hammer2_inode.c | 272 +++++++++++++++++++++------------------
sys/vfs/hammer2/hammer2_vfsops.c | 158 +++++++++++++++--------
sys/vfs/hammer2/hammer2_vnops.c | 6 +-
5 files changed, 287 insertions(+), 213 deletions(-)
DragonFly BSD source repository
More information about the Commits