1. replace hand-rolled macros for operation type with enum
2. unlock the vnode in vput itself, there is no need to branch on it
3. remove the useless v_usecount assertion. few lines above the checks if v_usecount > 0 and leaves. should the value be negative, refcount would fail.
4. the CTR return vnode %p to the freelist is incorrect as vdrop may find the vnode with holdcnt > 1. if the like should exist, it should be moved there
5. there is no need to error = 0