vnode_ref
Increment the usecount on a vnode.
Declaration
int vnode_ref(vnode_t vp);Parameters
- vp:
The vnode on which to obtain a persistent reference.
Return Value
0 for success; ENOENT if the vnode is dead or in the process of being recycled AND the calling thread is not the vnode owner.
Discussion
If vnode_ref() succeeds, the resulting usecount must be released with vnode_rele(). vnode_ref() is called to obtain a persistent reference on a vnode. This type of reference does not provide the same strong guarantee that a vnode will persist as does an iocount--it merely ensures that a vnode will not be reused to represent a different file. However, a usecount may be held for extended periods of time, whereas an iocount is intended to be obtained and released quickly as part of performing a vnode operation. A holder of a usecount must call vnode_getwithref()/vnode_put() in order to perform any operations on that vnode.
See Also
vnode
vnop_access_descvnop_advlock_descvnop_allocate_descvnop_blktooff_descvnop_blockmap_descvnop_bwrite_descvnop_clonefile_descvnop_close_descvnop_copyfile_descvnop_create_descvnop_default_descvnop_exchange_descvnop_fsync_descvnop_getattr_descvnop_getattrlistbulk_descvnop_getxattr_descvnop_inactive_descvnop_ioctl_descvnop_kqfilt_add_descvnop_kqfilt_remove_descvnop_link_descvnop_listxattr_descvnop_lookup_descvnop_mkdir_descvnop_mknod_descvnop_mmap_check_descvnop_mmap_descvnop_mnomap_descvnop_offtoblk_descvnop_open_descvnop_pagein_descvnop_pageout_descvnop_pathconf_descvnop_print_descvnop_read_descvnop_readdir_descvnop_readdirattr_descvnop_readlink_descvnop_reclaim_descvnop_remove_descvnop_removexattr_descvnop_rename_descvnop_renamex_descvnop_revoke_descvnop_rmdir_descvnop_searchfs_descvnop_select_descvnop_setattr_descvnop_setlabel_descvnop_setxattr_descvnop_strategy_descvnop_symlink_descvnop_truncate_descvnop_whiteout_descvnop_write_descvnode_addfsrefvnode_authattrvnode_authattr_newvnode_authorizevnode_clearautocandidatevnode_cleardirtyvnode_clearfastdevicecandidatevnode_clearfsnodevnode_clearmountedonvnode_clearnocachevnode_clearnoreadaheadvnode_closevnode_createvnode_fsnodevnode_getvnode_get_va_fsidvnode_getattrvnode_getbackingvnodevnode_getnamevnode_getparentvnode_getwithrefvnode_getwithvidvnode_hascleanblksvnode_hasdirtyblksvnode_isautocandidatevnode_isblkvnode_ischrvnode_isdirvnode_isdirtyvnode_isfastdevicecandidatevnode_isfifovnode_isinusevnode_islnkvnode_ismountvnode_ismountedonvnode_isnamedstreamvnode_isnocachevnode_isnoreadaheadvnode_isonexternalstoragevnode_isragevnode_isrecycledvnode_isregvnode_isswapvnode_issystemvnode_isvrootvnode_iteratevnode_lookupvnode_mountvnode_mountedherevnode_needssnapshotsvnode_notifyvnode_openvnode_putvnode_putnamevnode_recyclevnode_relevnode_removefsrefvnode_setattrvnode_setautocandidatevnode_setdirtyvnode_setfastdevicecandidatevnode_setmountedonvnode_setmultipathvnode_setnocachevnode_setnoreadaheadvnode_settagvnode_specrdevvnode_startwritevnode_tagvnode_uncache_credentialsvnode_update_identityvnode_vfs64bitreadyvnode_vfsisrdonlyvnode_vfsmaxsymlenvnode_vfsnamevnode_vfstypenumvnode_vidvnode_vtypevnode_waitforwritesvnode_writedonevnode_attrvnode_fsparamvnode_tvnodeopv_descvnodeopv_entry_descvnop_access_argsvnop_advlock_argsvnop_allocate_argsvnop_blktooff_argsvnop_blockmap_argsvnop_bwrite_argsvnop_clonefile_argsvnop_close_argsvnop_copyfile_argsvnop_create_argsvnop_exchange_argsvnop_fsync_argsvnop_generic_argsvnop_getattr_argsvnop_getattrlistbulk_argsvnop_getxattr_argsvnop_inactive_argsvnop_ioctl_argsvnop_kqfilt_add_argsvnop_kqfilt_remove_argsvnop_link_argsvnop_listxattr_argsvnop_lookup_argsvnop_mkdir_argsvnop_mknod_argsvnop_mmap_argsvnop_mmap_check_argsvnop_mnomap_argsvnop_offtoblk_argsvnop_open_argsvnop_pagein_argsvnop_pageout_argsvnop_pathconf_argsvnop_read_argsvnop_readdir_argsvnop_readdirattr_argsvnop_readlink_argsvnop_reclaim_argsvnop_remove_argsvnop_removexattr_argsvnop_rename_argsvnop_renamex_argsvnop_revoke_argsvnop_rmdir_argsvnop_searchfs_argsvnop_select_argsvnop_setattr_argsvnop_setlabel_argsvnop_setxattr_argsvnop_strategy_argsvnop_symlink_argsvnop_whiteout_argsvnop_write_args