cvs commit: src/sys/emulation/linux/i386/linprocfs src/sys/kern src/sys/sys src/sys/vfs/coda src/sys/vfs/fdesc src/sys/vfs/gnu/ext2fs src/sys/vfs/hpfs src/sys/vfs/isofs/cd9660 src/sys/vfs/mfs src/sys/vfs/msdosfs src/sys/vfs/nfs src/sys/vfs/ntfs ...
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Aug 28 12:03:29 PDT 2004
dillon 2004/08/28 12:02:35 PDT
DragonFly src repository
Modified files:
sys/emulation/linux/i386/linprocfs linprocfs_subr.c
sys/kern kern_lock.c vfs_default.c vfs_subr.c
vfs_vopops.c
sys/sys lock.h namecache.h vnode.h
sys/vfs/coda cnode.h coda_vnops.c
sys/vfs/fdesc fdesc_vnops.c
sys/vfs/gnu/ext2fs ext2_vfsops.c
sys/vfs/hpfs hpfs.h hpfs_vfsops.c hpfs_vnops.c
sys/vfs/isofs/cd9660 cd9660_node.c cd9660_node.h
cd9660_vfsops.c
sys/vfs/mfs mfs_vfsops.c
sys/vfs/msdosfs denode.h msdosfs_denode.c msdosfs_vnops.c
sys/vfs/nfs nfs_node.c nfs_vnops.c nfsnode.h
sys/vfs/ntfs ntfs_inode.h ntfs_vfsops.c
sys/vfs/nullfs null.h null_subr.c null_vnops.c
sys/vfs/nwfs nwfs_node.c
sys/vfs/portal portal_vfsops.c portal_vnops.c
sys/vfs/procfs procfs_subr.c procfs_vfsops.c
procfs_vnops.c
sys/vfs/smbfs smbfs_node.c smbfs_node.h smbfs_vnops.c
sys/vfs/udf udf_vnops.c
sys/vfs/ufs ffs_vfsops.c inode.h ufs_extern.h
ufs_ihash.c ufs_inode.c ufs_vnops.c
sys/vfs/umapfs umap.h umap_subr.c umap_vnops.c
sys/vfs/union union_subr.c
sys/vm vm_swap.c
Log:
VFS messaging/interfacing work stage 4/99. This stage goes a long ways
towards allowing us to move the vnode locking into a kernel layer. It
gets rid of a lot of cruft from FreeBSD-4. FreeBSD-5 has done some of this
stuff too (such as changing the default locking to stdlock from nolock),
but DragonFly is going further.
* Consolidate vnode locks into the vnode structure, add an embedded v_lock,
and getting rid of both v_vnlock and v_data based head-of-structure locks.
* Change the default vops to use a standard vnode lock rather then a fake
non-lock.
* Get rid of vop_nolock() and friends, we no longer support non-locking
vnodes.
* Get rid of vop_sharedlock(), we no longer support non standard shared-only
locks (only NFS was using it and the mount-crossing lookup code should
now prevent races to root from dead NFS volumes).
* Integrate lock initialization into getnewvnode(). We do not yet
incorporate automatically locking into getnewvnode(). getnewvnode()
now has two additional arguments, lktimeout and lkflags, for lock
structure initialization.
* Change the sync vnode lock from nolock to stdlock. This may require more
tuning down the line. Fix various sync_inactive() to properly unlock
the lock as per the VOP API.
* Properly flag the 'rename' vop operation regarding required tdvp and tvp
unlocks (the flags are only used by nullfs).
* Get rid of all inode-embedded vnode locks
* Remove manual lockinit and use new getnewvnode() args instead.
Lock the vnode prior to doing anything that might block in
order to avoid synclist access before the vnode has been properly
initialize.
* Generally change inode hash insertion to also check
for a hash collision and return failure if it occurs,
rather then doing (often non-atomic) relookups and
other checks. These sorts of collisions can occur
if a vnode is being destroyed at the same time a new
vnode is being created from an inode. A new vnode is
not generally accessible, except by the sync code (from
the mountlist) until it's underlying inode has been hashed
so dealing with a hash collision should be as simple as
throwing away the vnode with a vput().
* Do not initialize a new vnode's v_data until after
the associated inode has been successfully added to
the hash, and make the xxx_inactive() and xxx_reclaim()
code friendly towards vnodes with a NULL v_data.
* NFS now uses standard locks rather then shared-only locks.
* PROCFS now uses standard locks rather then non-locks, and PROCFS's
lookup code now understands VOP lookup semantics. PROCFS now uses
a real hash table for its node search rather then a single singly-linked
list (which should better scale to systems with thousands of processes).
* NULLFS should now properly handle lookup() and rename() locks. NULLFS's
node handling code has been rewritten. NULLFS's bypass code now understands
vnode unlocks (rename case).
* UFS no longer needs the ffs_inode_hash_lock hacks. It now uses the new
collision-on-hash-add methodology. This will speed up UFS when operating
on lots of small files (reported by David Rhodus).
Revision Changes Path
1.12 +2 -1 src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c
1.11 +16 -6 src/sys/kern/kern_lock.c
1.13 +17 -198 src/sys/kern/vfs_default.c
1.38 +15 -10 src/sys/kern/vfs_subr.c
1.4 +2 -1 src/sys/kern/vfs_vopops.c
1.9 +2 -2 src/sys/sys/lock.h
1.7 +21 -6 src/sys/sys/namecache.h
1.21 +34 -18 src/sys/sys/vnode.h
1.4 +0 -1 src/sys/vfs/coda/cnode.h
1.19 +6 -8 src/sys/vfs/coda/coda_vnops.c
1.14 +1 -1 src/sys/vfs/fdesc/fdesc_vnops.c
1.19 +1 -2 src/sys/vfs/gnu/ext2fs/ext2_vfsops.c
1.13 +0 -1 src/sys/vfs/hpfs/hpfs.h
1.20 +2 -2 src/sys/vfs/hpfs/hpfs_vfsops.c
1.17 +1 -1 src/sys/vfs/hpfs/hpfs_vnops.c
1.11 +40 -30 src/sys/vfs/isofs/cd9660/cd9660_node.c
1.5 +2 -3 src/sys/vfs/isofs/cd9660/cd9660_node.h
1.20 +14 -8 src/sys/vfs/isofs/cd9660/cd9660_vfsops.c
1.17 +1 -1 src/sys/vfs/mfs/mfs_vfsops.c
1.8 +1 -3 src/sys/vfs/msdosfs/denode.h
1.15 +80 -71 src/sys/vfs/msdosfs/msdosfs_denode.c
1.18 +9 -6 src/sys/vfs/msdosfs/msdosfs_vnops.c
1.13 +4 -4 src/sys/vfs/nfs/nfs_node.c
1.28 +3 -3 src/sys/vfs/nfs/nfs_vnops.c
1.12 +0 -1 src/sys/vfs/nfs/nfsnode.h
1.5 +0 -4 src/sys/vfs/ntfs/ntfs_inode.h
1.21 +3 -4 src/sys/vfs/ntfs/ntfs_vfsops.c
1.6 +3 -5 src/sys/vfs/nullfs/null.h
1.13 +144 -83 src/sys/vfs/nullfs/null_subr.c
1.14 +188 -132 src/sys/vfs/nullfs/null_vnops.c
1.14 +20 -19 src/sys/vfs/nwfs/nwfs_node.c
1.11 +1 -1 src/sys/vfs/portal/portal_vfsops.c
1.16 +2 -1 src/sys/vfs/portal/portal_vnops.c
1.10 +70 -43 src/sys/vfs/procfs/procfs_subr.c
1.8 +3 -1 src/sys/vfs/procfs/procfs_vfsops.c
1.19 +38 -20 src/sys/vfs/procfs/procfs_vnops.c
1.13 +2 -2 src/sys/vfs/smbfs/smbfs_node.c
1.4 +0 -1 src/sys/vfs/smbfs/smbfs_node.h
1.16 +1 -1 src/sys/vfs/smbfs/smbfs_vnops.c
1.7 +3 -2 src/sys/vfs/udf/udf_vnops.c
1.24 +17 -38 src/sys/vfs/ufs/ffs_vfsops.c
1.8 +1 -2 src/sys/vfs/ufs/inode.h
1.9 +1 -1 src/sys/vfs/ufs/ufs_extern.h
1.13 +37 -19 src/sys/vfs/ufs/ufs_ihash.c
1.9 +21 -21 src/sys/vfs/ufs/ufs_inode.c
1.20 +1 -1 src/sys/vfs/ufs/ufs_vnops.c
1.7 +8 -3 src/sys/vfs/umapfs/umap.h
1.11 +31 -14 src/sys/vfs/umapfs/umap_subr.c
1.11 +11 -8 src/sys/vfs/umapfs/umap_vnops.c
1.15 +3 -6 src/sys/vfs/union/union_subr.c
1.14 +1 -1 src/sys/vm/vm_swap.c
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_lock.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_default.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_subr.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_vopops.c.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/lock.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/namecache.h.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/vnode.h.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/coda/cnode.h.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/coda/coda_vnops.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/fdesc/fdesc_vnops.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/gnu/ext2fs/ext2_vfsops.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hpfs/hpfs.h.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hpfs/hpfs_vfsops.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hpfs/hpfs_vnops.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/isofs/cd9660/cd9660_node.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/isofs/cd9660/cd9660_node.h.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/isofs/cd9660/cd9660_vfsops.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/mfs/mfs_vfsops.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/denode.h.diff?r1=1.7&r2=1.8&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/msdosfs_denode.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/msdosfs_vnops.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_node.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_vnops.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfsnode.h.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_inode.h.diff?r1=1.4&r2=1.5&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_vfsops.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nullfs/null.h.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nullfs/null_subr.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nullfs/null_vnops.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nwfs/nwfs_node.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/portal/portal_vfsops.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/portal/portal_vnops.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_subr.c.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_vfsops.c.diff?r1=1.7&r2=1.8&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_vnops.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_node.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_node.h.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_vnops.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/udf/udf_vnops.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ffs_vfsops.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/inode.h.diff?r1=1.7&r2=1.8&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_extern.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_ihash.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_inode.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_vnops.c.diff?r1=1.19&r2=1.20&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/umapfs/umap.h.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/umapfs/umap_subr.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/umapfs/umap_vnops.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/union/union_subr.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_swap.c.diff?r1=1.13&r2=1.14&f=u
More information about the Commits
mailing list