Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys
Module Name: src
Committed By: ad
Date: Sun Dec 1 13:56:29 UTC 2019
Modified Files:
src/sys/kern: vfs_subr.c vfs_vnode.c vfs_vnops.c vnode_if.sh
src/sys/miscfs/genfs: genfs_vnops.c
src/sys/sys: vnode.h vnode_impl.h
Log Message:
Minor vnode locking changes:
- Stop using atomics to maniupulate v_usecount. It was a mistake to begin
with. It doesn't work as intended unless the XLOCK bit is incorporated in
v_usecount and we don't have that any more. When I introduced this 10+
years ago it was to reduce pressure on v_interlock but it doesn't do that,
it just makes stuff disappear from lockstat output and introduces problems
elsewhere. We could do atomic usecounts on vnodes but there has to be a
well thought out scheme.
- Resurrect LK_UPGRADE/LK_DOWNGRADE which will be needed to work effectively
when there is increased use of shared locks on vnodes.
- Allocate the vnode lock using rw_obj_alloc() to reduce false sharing of
struct vnode.
- Put all of the LRU lists into a single cache line, and do not requeue a
vnode if it's already on the correct list and was requeued recently (less
than a second ago).
Kernel build before and after:
119.63s real 1453.16s user 2742.57s system
115.29s real 1401.52s user 2690.94s system
To generate a diff of this commit:
cvs rdiff -u -r1.474 -r1.475 src/sys/kern/vfs_subr.c
cvs rdiff -u -r1.103 -r1.104 src/sys/kern/vfs_vnode.c
cvs rdiff -u -r1.202 -r1.203 src/sys/kern/vfs_vnops.c
cvs rdiff -u -r1.67 -r1.68 src/sys/kern/vnode_if.sh
cvs rdiff -u -r1.199 -r1.200 src/sys/miscfs/genfs/genfs_vnops.c
cvs rdiff -u -r1.283 -r1.284 src/sys/sys/vnode.h
cvs rdiff -u -r1.17 -r1.18 src/sys/sys/vnode_impl.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index