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