vfs: release usecount using fetchadd
- If we release the last usecount we take ownership of the hold count, which
means the vnode will remain allocated until we vdrop it.
- If someone else vrefs they will find no usecount and will proceed to add
their own hold count.
- No code has a problem with v_usecount transitioning to 0 without the
interlock
These facts combined mean we can fetchadd instead of having a cmpset loop.
Reviewed by: kib (previous version)
Tested by: pho
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D21528