Similarly to use count, we only care about vget and vref for which the contract has not changed. Since r356672 vnode activation only requires freevnodes update which we can accomodate without the interlock.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
sys/kern/vfs_subr.c | ||
---|---|---|
3354 ↗ | (On Diff #66765) | This requires a little longer comment. I think I understand it but it would be nice to have a little more language around it. |
sys/kern/vfs_subr.c | ||
---|---|---|
3354 ↗ | (On Diff #66765) | How about this: By the time we get here another thread might have called vhold and we have no way of knowing if it was followed by vlazy. Unlinking from the list would be a bug if it was and letting it stay is harmless in either case. Thus don't do anything if someone is using the vnode. |
sys/kern/vfs_subr.c | ||
---|---|---|
3354 ↗ | (On Diff #66765) | "Don't remove the vnode from the lazy list if another thread has increased the hold count. It may have re-enqueued the vnode to the lazy list and is now responsible for its removal" |