This patch moves to only requiring the object lock on the last ref (or second to last for anonymous objects) as well as the first ref of a vnode object.
The object lock wouldn't be required for the first vnode ref except to serialize with vnode_pager_dealloc() which could race and drop a vref that is not yet acquired. I'm not sure if this is even possible anymore and if it is not vm_object_reference() could be simplified.