diff options
| author | ad <ad@NetBSD.org> | 2019-12-01 13:56:29 +0000 |
|---|---|---|
| committer | ad <ad@NetBSD.org> | 2019-12-01 13:56:29 +0000 |
| commit | 1e190518b79868bb9f5884904c84659c60be5eec (patch) | |
| tree | e218fb1d2056547500a48768b1667c8acbc5e37d /sys/dev/dm/dm_pdev.c | |
| parent | 275cfc8eadf420f8831b84a34788e87f3e0c353f (diff) | |
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
Diffstat (limited to 'sys/dev/dm/dm_pdev.c')
0 files changed, 0 insertions, 0 deletions
