git: hammer2 - Cleanup hammer2_cluster API
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Mar 29 19:50:14 PDT 2015
commit b8ba9690ca56cd9ac33ff1a5185ddd164169d9ca
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Mar 29 19:40:17 2015 -0700
hammer2 - Cleanup hammer2_cluster API
* Track whether a cluster structure is locked or not. For the upcoming
cluster locking code, cluster structures cannot be recursively locked
(though you can always make a copy and lock that).
* Move the ddflag (direct-data-in-inode) flag into the cluster structure
And remove it from a number of API calls.
* Add fields and flags in preparation for more formalized locking and
tracking of clusters.
* Refactor code to remove hammer2_cluster_replace() and
hammer2_cluster_replace_locked(). This involves changing
hammer2_hardlink_find() and a few other things.
* Refactor the cluster focus code. cluster->focus is only set and valid
when a cluster is locked. Do not set it as a side effect of other
operations.
* Refactor chain validation in hammer2_cluster_lookup() and add it to
hammer2_cluster_next().
* Add the concept of a read-only cluster lock which will allow upcoming
cluster locking code to reduce the number of chains that actually
get locked or undergo I/O.
* In strategy file writing code call hammer2_cluster_modify_ip()
only when the inode itself is being modified by the write() due
to being in OPFLAG_DIRECTDATA mode (when 512 bytes of data is embedded
in the inode).
Summary of changes:
sys/vfs/hammer2/hammer2.h | 29 +++++---
sys/vfs/hammer2/hammer2_bulkscan.c | 4 +-
sys/vfs/hammer2/hammer2_chain.c | 24 +------
sys/vfs/hammer2/hammer2_cluster.c | 144 +++++++++++++++++++++++++++++--------
sys/vfs/hammer2/hammer2_freemap.c | 7 +-
sys/vfs/hammer2/hammer2_inode.c | 135 ++++++++++++++++++----------------
sys/vfs/hammer2/hammer2_iocom.c | 3 +-
sys/vfs/hammer2/hammer2_ioctl.c | 10 ++-
sys/vfs/hammer2/hammer2_syncthr.c | 16 ++++-
sys/vfs/hammer2/hammer2_vfsops.c | 86 ++++++++++++----------
sys/vfs/hammer2/hammer2_vnops.c | 22 +++---
11 files changed, 293 insertions(+), 187 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/b8ba9690ca56cd9ac33ff1a5185ddd164169d9ca
--
DragonFly BSD source repository
More information about the Commits
mailing list