commit d0755e6de31ac9c91167b77bd4334b3c4d060fb6 Author: Matthew Dillon <dil...@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