tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Atomic vcache_tryvget()
On Sat, Apr 04, 2020 at 09:33:26PM +0000, Andrew Doran wrote:
> This change makes vcache_tryvget() do its work by means of a single atomic
> operation, which removes the need to take v_interlock beforehand.
I re-did this one more elegantly. Assuming no problems I plan to commit
some time this week.
http://www.netbsd.org/~ad/2020/vget.diff
The basic idea: have a "gate" bit in v_usecount that's only set when the
vnode is LOADED. vcache_tryvget() needs to see this otherwise it fails and
we go down the slow path instead. The state transition for reclaiming is
then:
...
LOADED
-> BLOCKED
confirm that caller still holds the last vnode reference
-> RECLAIMING
...
Cheers,
Andrew
Home |
Main Index |
Thread Index |
Old Index