VOP_OPEN expects vp to be locked on entry and will leave it locked on return.
VOP_CLOSE expects at least a reference to be associated with the vnode and does not care whether the vnode is locked or not. The lock and reference state is left unchanged on return. Note that vn_close expects an unlocked, referenced vnode and will dereference the vnode prior to returning.
The fdidx argument to VOP_OPEN is currently unused, use -1 for the meantime; however, this will change in future.
Zero is returned on success, otherwise an error code is returned.
vop_open(struct vnode *vp, int mode, struct ucred *cred, struct thread *td)
* Most file systems dont do much here.