When not in use, vnodes are kept on a free list. The vnodes still reference valid files but may be reused to refer to a new file at any time. Often, these vnodes are also held in caches in the system, such as the name cache.
When a vnode which is on the free list is used again, for instance if the vnode was found in the name cache as a result of a call to VOP_LOOKUP(9) then the new user must call vget to increment the reference count and remove it from the free list.