Matthew Dillon
2018-12-05 22:29:28 UTC
commit d0755e6de31ac9c91167b77bd4334b3c4d060fb6
Author: Matthew Dillon <***@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(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d0755e6de31ac9c91167b77bd4334b3c4d060fb6
Author: Matthew Dillon <***@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(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d0755e6de31ac9c91167b77bd4334b3c4d060fb6
--
DragonFly BSD source repository
DragonFly BSD source repository