git: hammer2 - Per-PFS transaction management
dillon at crater.dragonflybsd.org
Wed May 20 22:24:05 PDT 2015
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed May 20 22:10:45 2015 -0700
hammer2 - Per-PFS transaction management
* Replace the global transaction manager with a per-mount transaction
* Each media volume's spmp (super-root pfs) also gets its own transaction
* The Filesystem sync now flushes each PFS associated with the mount,
and then flushes the super-root for the related physical volumes.
When flushing the super-root, the flush stops at the PFS transition.
* Interactions on one mount point no longer stall other mount points on
the same media. This also means that freemap updates related to
other mount points may occur while a flush is occuring on one of them.
(might have broken recovery here, will fix in another pass).
* For now keep the syncer interlock vs new modifying operations to ensure
a stable snapshot.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 5 +-
sys/vfs/hammer2/hammer2_chain.c | 24 +++++---
sys/vfs/hammer2/hammer2_cluster.c | 2 +-
sys/vfs/hammer2/hammer2_flush.c | 56 +++++++++++--------
sys/vfs/hammer2/hammer2_vfsops.c | 113 +++++++++++++++-----------------------
sys/vfs/hammer2/hammer2_vnops.c | 10 +---
6 files changed, 101 insertions(+), 109 deletions(-)
DragonFly BSD source repository
More information about the Commits