git: hammer2 - multi-target mount part 2/many
dillon at crater.dragonflybsd.org
Sat Mar 29 17:34:14 PDT 2014
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Mar 29 17:09:08 2014 -0700
hammer2 - multi-target mount part 2/many
* Split media and in-memory tracking of TIDs. In-memory tracking is
effectively global, while on-media TIDs are now split into an independent
domain for each PFS plus one for the super-root and freemap topology.
Introduces hammer2_xid_t and reformulates some of the TID and XID
* Refactor the flush code to no longer depend on media modify_tid/mirror_tid
values during a flush. In-memory XIDs are used for all flush recursions.
* Refactor the transaction mechanisms in order to allow XIDs to cover multiple
TID domains. For the moment, the transaction management structure is
global but the code is designed to allow us to have multiple management
domains in a future commit.
* Associate a PMP structure with each storage topology's super-root and
freemap (still a bit rough).
* Each PFS now accounts for its own inode numbers and transaction ids,
independent of other PFSs. This also means that both inode numbers
and transaction ids are PFS-specific, so multiple storage medias which
are part of the same PFS will use the PFS-centric tracking rather than
* Cleanup a few memory leaks and remove some debugging from the chain code.
* Refactor mount and unmount code to handle the new PFS abstraction.
* Refactor the volume data lock/unlock/modify mechanics somewhat.
Summary of changes:
sbin/hammer2/cmd_debug.c | 4 +-
sbin/newfs_hammer2/newfs_hammer2.c | 21 +-
sys/vfs/hammer2/TODO | 9 +
sys/vfs/hammer2/hammer2.h | 89 ++++----
sys/vfs/hammer2/hammer2_chain.c | 257 +++++++++++-----------
sys/vfs/hammer2/hammer2_cluster.c | 25 ++-
sys/vfs/hammer2/hammer2_disk.h | 52 ++---
sys/vfs/hammer2/hammer2_flush.c | 389 +++++++++++++++++++---------------
sys/vfs/hammer2/hammer2_freemap.c | 109 ++--------
sys/vfs/hammer2/hammer2_inode.c | 67 +++---
sys/vfs/hammer2/hammer2_ioctl.c | 35 +--
sys/vfs/hammer2/hammer2_subr.c | 31 +--
sys/vfs/hammer2/hammer2_vfsops.c | 423 +++++++++++++++++++++++++++----------
sys/vfs/hammer2/hammer2_vnops.c | 26 +--
14 files changed, 870 insertions(+), 667 deletions(-)
DragonFly BSD source repository
More information about the Commits