git: kernel - Normalize the vx_*() vnode interface
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Mar 3 19:39:35 PST 2020
commit fc36a10bce8c5678d103e0498db849506d9dac68
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Mar 3 13:26:48 2020 -0800
kernel - Normalize the vx_*() vnode interface
* The vx_*() vnode interface is used for initial allocations, reclaims,
and terminations.
Normalize all use cases to prevent the mixing together of the vx_*()
API and the vn_*() API. For example, vx_lock() should not be paired
with vn_unlock(), and so forth.
* Integrate an update-counter mechanism into the vx_*() API, assert
reasonability.
* Change vfs_cache.c to use an int update counter instead of a long.
The vfs_cache code can't quite use the spin-lock update counter API
yet.
Use proper atomics for load and store.
* Implement VOP_GETATTR_QUICK, meant to be a 'quick' version of
VOP_GETATTR() that only retrieves information related to permissions
and ownership. This will be fast-pathed in a later commit.
* Implement vx_downgrade() to convert an exclusive vx_lock into an
exclusive vn_lock (for vnodes). Adjust all use cases in the
getnewvnode() path.
* Remove unnecessary locks in tmpfs_getattr() and don't use
any in tmpfs_getattr_quick().
* Remove unnecessary locks in hammer2_vop_getattr() and don't use
any in hammer2_vop_getattr_quick()
Summary of changes:
sys/gnu/vfs/ext2fs/ext2_vfsops.c | 2 +
sys/kern/vfs_cache.c | 31 +++++++++-----
sys/kern/vfs_default.c | 12 ++++++
sys/kern/vfs_lock.c | 23 ++++++++++-
sys/kern/vfs_mount.c | 4 +-
sys/kern/vfs_nlookup.c | 10 ++++-
sys/kern/vfs_subr.c | 5 ++-
sys/kern/vfs_vnops.c | 14 +++++++
sys/kern/vfs_vopops.c | 33 +++++++++++++++
sys/sys/spinlock2.h | 22 +++++++++-
sys/sys/systm.h | 15 +++++--
sys/sys/vfsops.h | 6 +++
sys/sys/vnode.h | 4 +-
sys/vfs/autofs/autofs_vnops.c | 1 +
sys/vfs/devfs/devfs_core.c | 1 +
sys/vfs/dirfs/dirfs_subr.c | 2 +
sys/vfs/fuse/fuse_node.c | 1 +
sys/vfs/hammer/hammer_inode.c | 3 +-
sys/vfs/hammer/hammer_vnops.c | 4 +-
sys/vfs/hammer2/hammer2_inode.c | 1 +
sys/vfs/hammer2/hammer2_vnops.c | 78 +++++++++++++++++++++++++++++++++---
sys/vfs/hpfs/hpfs_vfsops.c | 1 +
sys/vfs/isofs/cd9660/cd9660_vfsops.c | 1 +
sys/vfs/msdosfs/msdosfs_denode.c | 1 +
sys/vfs/nfs/nfs_node.c | 2 +
sys/vfs/ntfs/ntfs_vfsops.c | 3 +-
sys/vfs/procfs/procfs_subr.c | 1 +
sys/vfs/smbfs/smbfs_node.c | 1 +
sys/vfs/tmpfs/tmpfs_subr.c | 1 +
sys/vfs/tmpfs/tmpfs_vnops.c | 38 +++++++++++++++++-
sys/vfs/tmpfs/tmpfs_vnops.h | 1 +
sys/vfs/udf/udf_vnops.c | 2 +-
sys/vfs/ufs/ffs_vfsops.c | 2 +
33 files changed, 293 insertions(+), 33 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/fc36a10bce8c5678d103e0498db849506d9dac68
--
DragonFly BSD source repository
More information about the Commits
mailing list