Lines Matching refs:vp

77 #define	ISROFILE(vp)	\  argument
78 ((vp)->v_type != VCHR && (vp)->v_type != VBLK && \
79 (vp)->v_type != VFIFO && vn_is_readonly(vp))
168 #define VOPSTATS_UPDATE(vp, counter) { \ argument
169 vfs_t *vfsp = (vp)->v_vfsp; \
171 (vfsp->vfs_flag & VFS_STATS) && (vp)->v_type != VBAD) { \
176 __dtrace_probe___fsinfo_##counter(vp, 0, stataddr); \
184 #define VOPSTATS_UPDATE_IO(vp, counter, bytecounter, bytesval) { \ argument
185 vfs_t *vfsp = (vp)->v_vfsp; \
187 (vfsp->vfs_flag & VFS_STATS) && (vp)->v_type != VBAD) { \
192 __dtrace_probe___fsinfo_##counter(vp, bytesval, stataddr); \
206 #define VOPXID_MAP_CR(vp, cr) { \ argument
207 vfs_t *vfsp = (vp)->v_vfsp; \
752 struct vnode *vp, in vn_rdwr() argument
767 if (rw == UIO_WRITE && ISROFILE(vp)) in vn_rdwr()
773 VOPXID_MAP_CR(vp, cr); in vn_rdwr()
788 if (nbl_need_check(vp)) { in vn_rdwr()
791 nbl_start_crit(vp, RW_READER); in vn_rdwr()
793 error = nbl_svmand(vp, cr, &svmand); in vn_rdwr()
796 if (nbl_conflict(vp, rw == UIO_WRITE ? NBL_WRITE : NBL_READ, in vn_rdwr()
803 (void) VOP_RWLOCK(vp, in vn_rdwr()
808 error = VOP_WRITE(vp, &uio, ioflag, cr, NULL); in vn_rdwr()
812 error = VOP_READ(vp, &uio, ioflag, cr, NULL); in vn_rdwr()
814 VOP_RWUNLOCK(vp, in vn_rdwr()
823 nbl_end_crit(vp); in vn_rdwr()
839 vn_rele(vnode_t *vp) in vn_rele() argument
841 mutex_enter(&vp->v_lock); in vn_rele()
842 if (vp->v_count == 1) { in vn_rele()
843 mutex_exit(&vp->v_lock); in vn_rele()
844 VOP_INACTIVE(vp, CRED(), NULL); in vn_rele()
847 VERIFY(vp->v_count > 0); in vn_rele()
848 VN_RELE_LOCKED(vp); in vn_rele()
849 mutex_exit(&vp->v_lock); in vn_rele()
859 vn_rele_dnlc(vnode_t *vp) in vn_rele_dnlc() argument
861 mutex_enter(&vp->v_lock); in vn_rele_dnlc()
862 VERIFY((vp->v_count > 0) && (vp->v_count_dnlc > 0)); in vn_rele_dnlc()
863 if (--vp->v_count_dnlc == 0) { in vn_rele_dnlc()
864 if (vp->v_count == 1) { in vn_rele_dnlc()
865 mutex_exit(&vp->v_lock); in vn_rele_dnlc()
866 VOP_INACTIVE(vp, CRED(), NULL); in vn_rele_dnlc()
869 VN_RELE_LOCKED(vp); in vn_rele_dnlc()
871 mutex_exit(&vp->v_lock); in vn_rele_dnlc()
882 vn_rele_stream(vnode_t *vp) in vn_rele_stream() argument
884 mutex_enter(&vp->v_lock); in vn_rele_stream()
885 vp->v_stream = NULL; in vn_rele_stream()
886 if (vp->v_count == 1) { in vn_rele_stream()
887 mutex_exit(&vp->v_lock); in vn_rele_stream()
888 VOP_INACTIVE(vp, CRED(), NULL); in vn_rele_stream()
891 VERIFY(vp->v_count > 0); in vn_rele_stream()
892 VN_RELE_LOCKED(vp); in vn_rele_stream()
893 mutex_exit(&vp->v_lock); in vn_rele_stream()
897 vn_rele_inactive(vnode_t *vp) in vn_rele_inactive() argument
899 VOP_INACTIVE(vp, CRED(), NULL); in vn_rele_inactive()
913 vn_rele_async(vnode_t *vp, taskq_t *taskq) in vn_rele_async() argument
915 mutex_enter(&vp->v_lock); in vn_rele_async()
916 if (vp->v_count == 1) { in vn_rele_async()
917 mutex_exit(&vp->v_lock); in vn_rele_async()
919 vp, TQ_SLEEP) != TASKQID_INVALID); in vn_rele_async()
922 VERIFY(vp->v_count > 0); in vn_rele_async()
923 VN_RELE_LOCKED(vp); in vn_rele_async()
924 mutex_exit(&vp->v_lock); in vn_rele_async()
960 struct vnode *vp; in vn_openat() local
1035 vn_createat(pnamep, seg, &vattr, excl, mode, &vp, crwhy, in vn_openat()
1043 NULLVPP, &vp, startvp)) { in vn_openat()
1056 if (!(filemode & FOFFMAX) && (vp->v_type == VREG)) { in vn_openat()
1058 if ((error = VOP_GETATTR(vp, &vattr, 0, in vn_openat()
1080 if (vp->v_type == VDIR && !(vp->v_flag & VDIROPEN)) { in vn_openat()
1084 if (ISROFILE(vp)) { in vn_openat()
1095 if (VOP_REALVP(vp, &rvp, NULL) != 0) in vn_openat()
1096 rvp = vp; in vn_openat()
1099 if ((error = VOP_GETATTR(vp, in vn_openat()
1101 MANDLOCK(vp, vattr.va_mode)) in vn_openat()
1111 if (error = VOP_ACCESS(vp, mode, accessflags, CRED(), NULL)) in vn_openat()
1119 vp->v_type != VDIR) { in vn_openat()
1123 if ((filemode & FEXEC) && vp->v_type != VREG) { in vn_openat()
1132 if ((filemode & FNOFOLLOW) && vp->v_type == VLNK) { in vn_openat()
1138 if ((error = VOP_GETATTR(vp, &vattr, 0, CRED(), NULL))) { in vn_openat()
1159 if (vp->v_type == VSOCK) { in vn_openat()
1162 error = VOP_REALVP(vp, &nvp, NULL); in vn_openat()
1163 if (error != 0 || nvp == NULL || nvp == vp || in vn_openat()
1170 if ((vp->v_type == VREG) && nbl_need_check(vp)) { in vn_openat()
1184 error = VOP_SHRLOCK(vp, F_SHARE_NBMAND, &shr, filemode, CRED(), in vn_openat()
1192 nbl_start_crit(vp, RW_READER); in vn_openat()
1196 if (error = VOP_GETATTR(vp, &vattr, 0, CRED(), NULL)) in vn_openat()
1198 if (nbl_conflict(vp, NBL_WRITE, 0, vattr.va_size, 0, in vn_openat()
1209 error = VOP_OPEN(&vp, filemode, CRED(), NULL); in vn_openat()
1220 if ((error = VOP_SETATTR(vp, &vattr, 0, CRED(), NULL)) != 0) in vn_openat()
1228 if ((error = VOP_IOCTL(vp, _FIODIRECTIO, DIRECTIO_ON, 0, in vn_openat()
1240 ASSERT(vp->v_count > 0); in vn_openat()
1243 nbl_end_crit(vp); in vn_openat()
1248 (void) VOP_CLOSE(vp, filemode, 1, (offset_t)0, CRED(), in vn_openat()
1254 (void) VOP_SHRLOCK(vp, F_UNSHARE, &shr, 0, CRED(), in vn_openat()
1271 VN_RELE(vp); in vn_openat()
1275 *vpp = vp; in vn_openat()
1292 vnode_t *vp, in vn_open_upgrade() argument
1295 ASSERT(vp->v_type == VREG); in vn_open_upgrade()
1298 atomic_inc_32(&vp->v_rdcnt); in vn_open_upgrade()
1300 atomic_inc_32(&vp->v_wrcnt); in vn_open_upgrade()
1306 vnode_t *vp, in vn_open_downgrade() argument
1309 ASSERT(vp->v_type == VREG); in vn_open_downgrade()
1312 ASSERT(vp->v_rdcnt > 0); in vn_open_downgrade()
1313 atomic_dec_32(&vp->v_rdcnt); in vn_open_downgrade()
1316 ASSERT(vp->v_wrcnt > 0); in vn_open_downgrade()
1317 atomic_dec_32(&vp->v_wrcnt); in vn_open_downgrade()
1355 struct vnode *vp = NULL; in vn_createat() local
1482 vp = *vpp; in vn_createat()
1483 if (VOP_REALVP(vp, &rvp, NULL) != 0) in vn_createat()
1484 rvp = vp; in vn_createat()
1485 if ((vap->va_mask & AT_SIZE) && nbl_need_check(vp)) { in vn_createat()
1486 nbl_start_crit(vp, RW_READER); in vn_createat()
1491 if (error = VOP_GETATTR(vp, &vattr, 0, CRED(), NULL)) { in vn_createat()
1494 if (MANDLOCK(vp, vattr.va_mode)) { in vn_createat()
1511 if (nbl_conflict(vp, NBL_WRITE, offset, in vn_createat()
1534 if (vp->v_flag & VROOT) { in vn_createat()
1536 error = VOP_CREATE(vp, "", vap, excl, mode, vpp, in vn_createat()
1553 (vp->v_type == VREG)) { in vn_createat()
1555 if ((error = VOP_GETATTR(vp, &vattr, 0, in vn_createat()
1593 nbl_end_crit(vp); in vn_createat()
1596 if (vp != NULL) { in vn_createat()
1597 VN_RELE(vp); in vn_createat()
1598 vp = NULL; in vn_createat()
1843 struct vnode *vp; /* entry vnode */ in vn_removeat() local
1857 dvp = vp = NULL; in vn_removeat()
1858 if (error = lookuppnat(&pn, NULL, NO_FOLLOW, &dvp, &vp, startvp)) { in vn_removeat()
1868 if (vp == NULL) { in vn_removeat()
1873 vfsp = vp->v_vfsp; in vn_removeat()
1883 if (vp->v_flag & VROOT) { in vn_removeat()
1913 mutex_enter(&vp->v_lock); in vn_removeat()
1914 if ((vp->v_flag & VROOT) == 0) { in vn_removeat()
1916 mutex_exit(&vp->v_lock); in vn_removeat()
1920 vfsp = vp->v_vfsp; in vn_removeat()
1928 mutex_exit(&vp->v_lock); in vn_removeat()
1934 VN_RELE(vp); in vn_removeat()
1941 vp = coveredvp; in vn_removeat()
1946 if (vp->v_type == VDIR) in vn_removeat()
1962 vtype = vp->v_type; in vn_removeat()
1975 if (nbl_need_check(vp)) { in vn_removeat()
1976 nbl_start_crit(vp, RW_READER); in vn_removeat()
1978 if (nbl_conflict(vp, NBL_REMOVE, 0, 0, 0, NULL)) { in vn_removeat()
1983 VN_RELE(vp); in vn_removeat()
1984 vp = NULL; in vn_removeat()
2016 nbl_end_crit(vp); in vn_removeat()
2019 if (vp != NULL) in vn_removeat()
2020 VN_RELE(vp); in vn_removeat()
2173 vn_vfswlock_wait(vnode_t *vp) in vn_vfswlock_wait() argument
2177 ASSERT(vp != NULL); in vn_vfswlock_wait()
2179 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfswlock_wait()
2190 vn_vfsrlock_wait(vnode_t *vp) in vn_vfsrlock_wait() argument
2194 ASSERT(vp != NULL); in vn_vfsrlock_wait()
2196 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfsrlock_wait()
2213 vn_vfswlock(vnode_t *vp) in vn_vfswlock() argument
2223 if (vp == NULL) in vn_vfswlock()
2226 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfswlock()
2236 vn_vfsrlock(vnode_t *vp) in vn_vfsrlock() argument
2246 if (vp == NULL) in vn_vfsrlock()
2249 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfsrlock()
2259 vn_vfsunlock(vnode_t *vp) in vn_vfsunlock() argument
2269 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfsunlock()
2277 vn_vfswlock_held(vnode_t *vp) in vn_vfswlock_held() argument
2282 ASSERT(vp != NULL); in vn_vfswlock_held()
2284 vpvfsentry = vn_vfslocks_getlock(vp); in vn_vfswlock_held()
2336 struct vnode *vp; in vn_cache_constructor() local
2338 vp = buf; in vn_cache_constructor()
2340 mutex_init(&vp->v_lock, NULL, MUTEX_DEFAULT, NULL); in vn_cache_constructor()
2341 mutex_init(&vp->v_vsd_lock, NULL, MUTEX_DEFAULT, NULL); in vn_cache_constructor()
2342 cv_init(&vp->v_cv, NULL, CV_DEFAULT, NULL); in vn_cache_constructor()
2343 rw_init(&vp->v_nbllock, NULL, RW_DEFAULT, NULL); in vn_cache_constructor()
2344 vp->v_femhead = NULL; /* Must be done before vn_reinit() */ in vn_cache_constructor()
2345 vp->v_path = vn_vpath_empty; in vn_cache_constructor()
2346 vp->v_path_stamp = 0; in vn_cache_constructor()
2347 vp->v_mpssdata = NULL; in vn_cache_constructor()
2348 vp->v_vsd = NULL; in vn_cache_constructor()
2349 vp->v_fopdata = NULL; in vn_cache_constructor()
2358 struct vnode *vp; in vn_cache_destructor() local
2360 vp = buf; in vn_cache_destructor()
2362 rw_destroy(&vp->v_nbllock); in vn_cache_destructor()
2363 cv_destroy(&vp->v_cv); in vn_cache_destructor()
2364 mutex_destroy(&vp->v_vsd_lock); in vn_cache_destructor()
2365 mutex_destroy(&vp->v_lock); in vn_cache_destructor()
2390 vn_recycle(vnode_t *vp) in vn_recycle() argument
2392 ASSERT(vp->v_pages == NULL); in vn_recycle()
2393 VERIFY(vp->v_path != NULL); in vn_recycle()
2399 vp->v_rdcnt = 0; in vn_recycle()
2400 vp->v_wrcnt = 0; in vn_recycle()
2401 vp->v_mmap_read = 0; in vn_recycle()
2402 vp->v_mmap_write = 0; in vn_recycle()
2409 if (vp->v_femhead) { in vn_recycle()
2411 ASSERT(vp->v_femhead->femh_list == NULL); in vn_recycle()
2412 mutex_destroy(&vp->v_femhead->femh_lock); in vn_recycle()
2413 kmem_free(vp->v_femhead, sizeof (*(vp->v_femhead))); in vn_recycle()
2414 vp->v_femhead = NULL; in vn_recycle()
2416 if (vp->v_path != vn_vpath_empty) { in vn_recycle()
2417 kmem_free(vp->v_path, strlen(vp->v_path) + 1); in vn_recycle()
2418 vp->v_path = vn_vpath_empty; in vn_recycle()
2420 vp->v_path_stamp = 0; in vn_recycle()
2422 if (vp->v_fopdata != NULL) { in vn_recycle()
2423 free_fopdata(vp); in vn_recycle()
2425 vp->v_mpssdata = NULL; in vn_recycle()
2426 vsd_free(vp); in vn_recycle()
2440 vn_reinit(vnode_t *vp) in vn_reinit() argument
2442 vp->v_count = 1; in vn_reinit()
2443 vp->v_count_dnlc = 0; in vn_reinit()
2444 vp->v_vfsp = NULL; in vn_reinit()
2445 vp->v_stream = NULL; in vn_reinit()
2446 vp->v_vfsmountedhere = NULL; in vn_reinit()
2447 vp->v_flag = 0; in vn_reinit()
2448 vp->v_type = VNON; in vn_reinit()
2449 vp->v_rdev = NODEV; in vn_reinit()
2451 vp->v_filocks = NULL; in vn_reinit()
2452 vp->v_shrlocks = NULL; in vn_reinit()
2453 vp->v_pages = NULL; in vn_reinit()
2455 vp->v_locality = NULL; in vn_reinit()
2456 vp->v_xattrdir = NULL; in vn_reinit()
2463 if (vp->v_path == NULL) { in vn_reinit()
2464 vp->v_path = vn_vpath_empty; in vn_reinit()
2468 vn_recycle(vp); in vn_reinit()
2474 vnode_t *vp; in vn_alloc() local
2476 vp = kmem_cache_alloc(vn_cache, kmflag); in vn_alloc()
2478 if (vp != NULL) { in vn_alloc()
2479 vp->v_femhead = NULL; /* Must be done before vn_reinit() */ in vn_alloc()
2480 vp->v_fopdata = NULL; in vn_alloc()
2481 vn_reinit(vp); in vn_alloc()
2484 return (vp); in vn_alloc()
2488 vn_free(vnode_t *vp) in vn_free() argument
2490 ASSERT(vp->v_shrlocks == NULL); in vn_free()
2491 ASSERT(vp->v_filocks == NULL); in vn_free()
2498 ASSERT((vp->v_count == 0) || (vp->v_count == 1)); in vn_free()
2499 ASSERT(vp->v_count_dnlc == 0); in vn_free()
2500 VERIFY(vp->v_path != NULL); in vn_free()
2501 if (vp->v_path != vn_vpath_empty) { in vn_free()
2502 kmem_free(vp->v_path, strlen(vp->v_path) + 1); in vn_free()
2503 vp->v_path = vn_vpath_empty; in vn_free()
2507 if (vp->v_femhead) { in vn_free()
2509 ASSERT(vp->v_femhead->femh_list == NULL); in vn_free()
2510 mutex_destroy(&vp->v_femhead->femh_lock); in vn_free()
2511 kmem_free(vp->v_femhead, sizeof (*(vp->v_femhead))); in vn_free()
2512 vp->v_femhead = NULL; in vn_free()
2515 if (vp->v_fopdata != NULL) { in vn_free()
2516 free_fopdata(vp); in vn_free()
2518 vp->v_mpssdata = NULL; in vn_free()
2519 vsd_free(vp); in vn_free()
2520 kmem_cache_free(vn_cache, vp); in vn_free()
2527 vn_reclaim(vnode_t *vp) in vn_reclaim() argument
2529 vfs_t *vfsp = vp->v_vfsp; in vn_reclaim()
2535 (void) VFS_VNSTATE(vfsp, vp, VNTRANS_RECLAIMED); in vn_reclaim()
2539 vn_idle(vnode_t *vp) in vn_idle() argument
2541 vfs_t *vfsp = vp->v_vfsp; in vn_idle()
2547 (void) VFS_VNSTATE(vfsp, vp, VNTRANS_IDLED); in vn_idle()
2550 vn_exists(vnode_t *vp) in vn_exists() argument
2552 vfs_t *vfsp = vp->v_vfsp; in vn_exists()
2558 (void) VFS_VNSTATE(vfsp, vp, VNTRANS_EXISTS); in vn_exists()
2562 vn_invalid(vnode_t *vp) in vn_invalid() argument
2564 vfs_t *vfsp = vp->v_vfsp; in vn_invalid()
2570 (void) VFS_VNSTATE(vfsp, vp, VNTRANS_DESTROYED); in vn_invalid()
2576 vnevent_support(vnode_t *vp, caller_context_t *ct) in vnevent_support() argument
2578 if (vp == NULL) in vnevent_support()
2581 return (VOP_VNEVENT(vp, VE_SUPPORT, NULL, NULL, ct)); in vnevent_support()
2585 vnevent_rename_src(vnode_t *vp, vnode_t *dvp, char *name, caller_context_t *ct) in vnevent_rename_src() argument
2587 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_rename_src()
2590 (void) VOP_VNEVENT(vp, VE_RENAME_SRC, dvp, name, ct); in vnevent_rename_src()
2594 vnevent_rename_dest(vnode_t *vp, vnode_t *dvp, char *name, in vnevent_rename_dest() argument
2597 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_rename_dest()
2600 (void) VOP_VNEVENT(vp, VE_RENAME_DEST, dvp, name, ct); in vnevent_rename_dest()
2604 vnevent_rename_dest_dir(vnode_t *vp, caller_context_t *ct) in vnevent_rename_dest_dir() argument
2606 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_rename_dest_dir()
2609 (void) VOP_VNEVENT(vp, VE_RENAME_DEST_DIR, NULL, NULL, ct); in vnevent_rename_dest_dir()
2613 vnevent_remove(vnode_t *vp, vnode_t *dvp, char *name, caller_context_t *ct) in vnevent_remove() argument
2615 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_remove()
2618 (void) VOP_VNEVENT(vp, VE_REMOVE, dvp, name, ct); in vnevent_remove()
2622 vnevent_rmdir(vnode_t *vp, vnode_t *dvp, char *name, caller_context_t *ct) in vnevent_rmdir() argument
2624 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_rmdir()
2627 (void) VOP_VNEVENT(vp, VE_RMDIR, dvp, name, ct); in vnevent_rmdir()
2631 vnevent_pre_rename_src(vnode_t *vp, vnode_t *dvp, char *name, in vnevent_pre_rename_src() argument
2634 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_pre_rename_src()
2637 (void) VOP_VNEVENT(vp, VE_PRE_RENAME_SRC, dvp, name, ct); in vnevent_pre_rename_src()
2641 vnevent_pre_rename_dest(vnode_t *vp, vnode_t *dvp, char *name, in vnevent_pre_rename_dest() argument
2644 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_pre_rename_dest()
2647 (void) VOP_VNEVENT(vp, VE_PRE_RENAME_DEST, dvp, name, ct); in vnevent_pre_rename_dest()
2651 vnevent_pre_rename_dest_dir(vnode_t *vp, vnode_t *nvp, char *name, in vnevent_pre_rename_dest_dir() argument
2654 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_pre_rename_dest_dir()
2657 (void) VOP_VNEVENT(vp, VE_PRE_RENAME_DEST_DIR, nvp, name, ct); in vnevent_pre_rename_dest_dir()
2661 vnevent_create(vnode_t *vp, caller_context_t *ct) in vnevent_create() argument
2663 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_create()
2666 (void) VOP_VNEVENT(vp, VE_CREATE, NULL, NULL, ct); in vnevent_create()
2670 vnevent_link(vnode_t *vp, caller_context_t *ct) in vnevent_link() argument
2672 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_link()
2675 (void) VOP_VNEVENT(vp, VE_LINK, NULL, NULL, ct); in vnevent_link()
2679 vnevent_mountedover(vnode_t *vp, caller_context_t *ct) in vnevent_mountedover() argument
2681 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_mountedover()
2684 (void) VOP_VNEVENT(vp, VE_MOUNTEDOVER, NULL, NULL, ct); in vnevent_mountedover()
2688 vnevent_truncate(vnode_t *vp, caller_context_t *ct) in vnevent_truncate() argument
2690 if (vp == NULL || vp->v_femhead == NULL) { in vnevent_truncate()
2693 (void) VOP_VNEVENT(vp, VE_TRUNCATE, NULL, NULL, ct); in vnevent_truncate()
2701 vn_is_readonly(vnode_t *vp) in vn_is_readonly() argument
2703 return (vp->v_vfsp->vfs_flag & VFS_RDONLY); in vn_is_readonly()
2707 vn_has_flocks(vnode_t *vp) in vn_has_flocks() argument
2709 return (vp->v_filocks != NULL); in vn_has_flocks()
2713 vn_has_mandatory_locks(vnode_t *vp, int mode) in vn_has_mandatory_locks() argument
2715 return ((vp->v_filocks != NULL) && (MANDLOCK(vp, mode))); in vn_has_mandatory_locks()
2719 vn_has_cached_data(vnode_t *vp) in vn_has_cached_data() argument
2721 return (vp->v_pages != NULL); in vn_has_cached_data()
2729 vn_can_change_zones(vnode_t *vp) in vn_can_change_zones() argument
2741 if (VOP_REALVP(vp, &rvp, NULL) != 0) in vn_can_change_zones()
2742 rvp = vp; in vn_can_change_zones()
2761 vn_ismntpt(vnode_t *vp) in vn_ismntpt() argument
2763 return (vp->v_vfsmountedhere != NULL); in vn_ismntpt()
2768 vn_mountedvfs(vnode_t *vp) in vn_mountedvfs() argument
2770 return (vp->v_vfsmountedhere); in vn_mountedvfs()
2777 vn_in_dnlc(vnode_t *vp) in vn_in_dnlc() argument
2779 return (vp->v_count_dnlc > 0); in vn_in_dnlc()
2793 vnode_t *vp, in vn_has_other_opens() argument
2797 ASSERT(vp != NULL); in vn_has_other_opens()
2801 if (vp->v_wrcnt > 1) in vn_has_other_opens()
2805 if ((vp->v_rdcnt > 1) || (vp->v_wrcnt > 1)) in vn_has_other_opens()
2809 if ((vp->v_rdcnt > 1) && (vp->v_wrcnt > 1)) in vn_has_other_opens()
2813 if (vp->v_rdcnt > 1) in vn_has_other_opens()
2829 vnode_t *vp, in vn_is_opened() argument
2833 ASSERT(vp != NULL); in vn_is_opened()
2837 if (vp->v_wrcnt) in vn_is_opened()
2841 if (vp->v_rdcnt && vp->v_wrcnt) in vn_is_opened()
2845 if (vp->v_rdcnt || vp->v_wrcnt) in vn_is_opened()
2849 if (vp->v_rdcnt) in vn_is_opened()
2863 vnode_t *vp, in vn_is_mapped() argument
2867 ASSERT(vp != NULL); in vn_is_mapped()
2879 if (atomic_add_64_nv((&(vp->v_mmap_write)), 0)) in vn_is_mapped()
2883 if ((atomic_add_64_nv((&(vp->v_mmap_read)), 0)) && in vn_is_mapped()
2884 (atomic_add_64_nv((&(vp->v_mmap_write)), 0))) in vn_is_mapped()
2888 if ((atomic_add_64_nv((&(vp->v_mmap_read)), 0)) || in vn_is_mapped()
2889 (atomic_add_64_nv((&(vp->v_mmap_write)), 0))) in vn_is_mapped()
2893 if (atomic_add_64_nv((&(vp->v_mmap_read)), 0)) in vn_is_mapped()
2900 if (vp->v_mmap_write) in vn_is_mapped()
2904 if (vp->v_mmap_read && vp->v_mmap_write) in vn_is_mapped()
2908 if (vp->v_mmap_read || vp->v_mmap_write) in vn_is_mapped()
2912 if (vp->v_mmap_read) in vn_is_mapped()
2931 vn_setops(vnode_t *vp, vnodeops_t *vnodeops) in vn_setops() argument
2935 ASSERT(vp != NULL); in vn_setops()
2938 op = vp->v_op; in vn_setops()
2945 if (vp->v_femhead != NULL || atomic_cas_ptr(&vp->v_op, op, vnodeops) != in vn_setops()
2947 fem_setvnops(vp, vnodeops); in vn_setops()
2958 vn_getops(vnode_t *vp) in vn_getops() argument
2962 ASSERT(vp != NULL); in vn_getops()
2964 op = vp->v_op; in vn_getops()
2966 if (vp->v_femhead == NULL && op == vp->v_op) { in vn_getops()
2969 return (fem_getvnops(vp)); in vn_getops()
2978 vn_matchops(vnode_t *vp, vnodeops_t *vnodeops) in vn_matchops() argument
2980 return (vn_getops(vp) == vnodeops); in vn_matchops()
2992 vn_matchopval(vnode_t *vp, char *vopname, fs_generic_func_p funcp) in vn_matchopval() argument
2996 vnodeops_t *vop = vn_getops(vp); in vn_matchopval()
3040 vn_clearpath(vnode_t *vp, hrtime_t compare_stamp) in vn_clearpath() argument
3044 mutex_enter(&vp->v_lock); in vn_clearpath()
3051 if (compare_stamp != 0 && vp->v_path_stamp != compare_stamp) { in vn_clearpath()
3052 mutex_exit(&vp->v_lock); in vn_clearpath()
3055 buf = vp->v_path; in vn_clearpath()
3056 vp->v_path = vn_vpath_empty; in vn_clearpath()
3057 vp->v_path_stamp = 0; in vn_clearpath()
3058 mutex_exit(&vp->v_lock); in vn_clearpath()
3065 vn_setpath_common(vnode_t *pvp, vnode_t *vp, const char *name, size_t len, in vn_setpath_common() argument
3076 vnode_t *, vp, char *, name, size_t, len + 1); in vn_setpath_common()
3083 mutex_enter(&vp->v_lock); in vn_setpath_common()
3084 oldbuf = vp->v_path; in vn_setpath_common()
3085 vp->v_path = buf; in vn_setpath_common()
3086 vp->v_path_stamp = gethrtime(); in vn_setpath_common()
3087 mutex_exit(&vp->v_lock); in vn_setpath_common()
3122 vn_clearpath(vp, pstamp); in vn_setpath_common()
3153 vnode_t *, vp, char *, name, size_t, buflen); in vn_setpath_common()
3189 mutex_enter(&vp->v_lock); in vn_setpath_common()
3190 if (vp->v_path_stamp == 0) { in vn_setpath_common()
3192 ASSERT(vp->v_path == vn_vpath_empty); in vn_setpath_common()
3193 vp->v_path_stamp = pstamp; in vn_setpath_common()
3194 vp->v_path = buf; in vn_setpath_common()
3195 mutex_exit(&vp->v_lock); in vn_setpath_common()
3196 } else if (vp->v_path_stamp < pstamp || is_rename) { in vn_setpath_common()
3201 oldbuf = vp->v_path; in vn_setpath_common()
3202 vp->v_path = buf; in vn_setpath_common()
3203 vp->v_path_stamp = gethrtime(); in vn_setpath_common()
3204 mutex_exit(&vp->v_lock); in vn_setpath_common()
3212 mutex_exit(&vp->v_lock); in vn_setpath_common()
3215 ASSERT(MUTEX_NOT_HELD(&vp->v_lock)); in vn_setpath_common()
3219 vn_updatepath(vnode_t *pvp, vnode_t *vp, const char *name) in vn_updatepath() argument
3227 pvp->v_path_stamp <= vp->v_path_stamp) { in vn_updatepath()
3241 vn_setpath_common(pvp, vp, name, len, B_FALSE); in vn_updatepath()
3251 vn_setpath(vnode_t *rootvp, vnode_t *pvp, vnode_t *vp, const char *name, in vn_setpath() argument
3254 vn_setpath_common(pvp, vp, name, len, B_FALSE); in vn_setpath()
3263 vn_setpath_str(vnode_t *vp, const char *str, size_t len) in vn_setpath_str() argument
3265 vn_setpath_common(NULL, vp, str, len, B_FALSE); in vn_setpath_str()
3273 vn_renamepath(vnode_t *pvp, vnode_t *vp, const char *name, size_t len) in vn_renamepath() argument
3275 vn_setpath_common(pvp, vp, name, len, B_TRUE); in vn_renamepath()
3340 vn_vmpss_usepageio(vnode_t *vp) in vn_vmpss_usepageio() argument
3342 vfs_t *vfsp = vp->v_vfsp; in vn_vmpss_usepageio()
3369 vnode_t *vp = *vpp; in fop_open() local
3371 VN_HOLD(vp); in fop_open()
3391 VOPXID_MAP_CR(vp, cr); in fop_open()
3400 VOPSTATS_UPDATE(vp, open); in fop_open()
3401 if ((vp->v_type == VREG) && (mode & FREAD)) in fop_open()
3402 atomic_dec_32(&vp->v_rdcnt); in fop_open()
3403 if ((vp->v_type == VREG) && (mode & FWRITE)) in fop_open()
3404 atomic_dec_32(&vp->v_wrcnt); in fop_open()
3415 if (*vpp != vp) { in fop_open()
3416 vn_copypath(vp, *vpp); in fop_open()
3419 if ((vp->v_type == VREG) && (mode & FREAD)) in fop_open()
3420 atomic_dec_32(&vp->v_rdcnt); in fop_open()
3423 if ((vp->v_type == VREG) && (mode & FWRITE)) in fop_open()
3424 atomic_dec_32(&vp->v_wrcnt); in fop_open()
3427 VN_RELE(vp); in fop_open()
3433 vnode_t *vp, in fop_close() argument
3442 VOPXID_MAP_CR(vp, cr); in fop_close()
3444 err = (*(vp)->v_op->vop_close)(vp, flag, count, offset, cr, ct); in fop_close()
3445 VOPSTATS_UPDATE(vp, close); in fop_close()
3450 if ((vp->v_type == VREG) && (count == 1)) { in fop_close()
3452 ASSERT(vp->v_rdcnt > 0); in fop_close()
3453 atomic_dec_32(&vp->v_rdcnt); in fop_close()
3456 ASSERT(vp->v_wrcnt > 0); in fop_close()
3457 atomic_dec_32(&vp->v_wrcnt); in fop_close()
3465 vnode_t *vp, in fop_read() argument
3474 VOPXID_MAP_CR(vp, cr); in fop_read()
3476 err = (*(vp)->v_op->vop_read)(vp, uiop, ioflag, cr, ct); in fop_read()
3477 VOPSTATS_UPDATE_IO(vp, read, in fop_read()
3484 vnode_t *vp, in fop_write() argument
3493 VOPXID_MAP_CR(vp, cr); in fop_write()
3495 err = (*(vp)->v_op->vop_write)(vp, uiop, ioflag, cr, ct); in fop_write()
3496 VOPSTATS_UPDATE_IO(vp, write, in fop_write()
3503 vnode_t *vp, in fop_ioctl() argument
3513 VOPXID_MAP_CR(vp, cr); in fop_ioctl()
3515 err = (*(vp)->v_op->vop_ioctl)(vp, cmd, arg, flag, cr, rvalp, ct); in fop_ioctl()
3516 VOPSTATS_UPDATE(vp, ioctl); in fop_ioctl()
3522 vnode_t *vp, in fop_setfl() argument
3530 VOPXID_MAP_CR(vp, cr); in fop_setfl()
3532 err = (*(vp)->v_op->vop_setfl)(vp, oflags, nflags, cr, ct); in fop_setfl()
3533 VOPSTATS_UPDATE(vp, setfl); in fop_setfl()
3539 vnode_t *vp, in fop_getattr() argument
3547 VOPXID_MAP_CR(vp, cr); in fop_getattr()
3553 if (vfs_has_feature(vp->v_vfsp, VFSFT_XVATTR) == 0) { in fop_getattr()
3562 vfs_has_feature(vp->v_vfsp, VFSFT_ACEMASKONACCESS) == 0) { in fop_getattr()
3565 err = (*(vp)->v_op->vop_getattr)(vp, vap, flags, cr, ct); in fop_getattr()
3566 VOPSTATS_UPDATE(vp, getattr); in fop_getattr()
3572 vnode_t *vp, in fop_setattr() argument
3580 VOPXID_MAP_CR(vp, cr); in fop_setattr()
3586 if (vfs_has_feature(vp->v_vfsp, VFSFT_XVATTR) == 0) { in fop_setattr()
3595 vfs_has_feature(vp->v_vfsp, VFSFT_ACEMASKONACCESS) == 0) { in fop_setattr()
3598 err = (*(vp)->v_op->vop_setattr)(vp, vap, flags, cr, ct); in fop_setattr()
3599 VOPSTATS_UPDATE(vp, setattr); in fop_setattr()
3605 vnode_t *vp, in fop_access() argument
3614 vfs_has_feature(vp->v_vfsp, VFSFT_ACEMASKONACCESS) == 0) { in fop_access()
3618 VOPXID_MAP_CR(vp, cr); in fop_access()
3620 err = (*(vp)->v_op->vop_access)(vp, mode, flags, cr, ct); in fop_access()
3621 VOPSTATS_UPDATE(vp, access); in fop_access()
3856 vnode_t *vp, in fop_readdir() argument
3871 vfs_has_feature(vp->v_vfsp, VFSFT_DIRENTFLAGS) == 0) in fop_readdir()
3874 VOPXID_MAP_CR(vp, cr); in fop_readdir()
3876 err = (*(vp)->v_op->vop_readdir)(vp, uiop, cr, eofp, ct, flags); in fop_readdir()
3877 VOPSTATS_UPDATE_IO(vp, readdir, in fop_readdir()
3922 vnode_t *vp, in fop_readlink() argument
3929 VOPXID_MAP_CR(vp, cr); in fop_readlink()
3931 err = (*(vp)->v_op->vop_readlink)(vp, uiop, cr, ct); in fop_readlink()
3932 VOPSTATS_UPDATE(vp, readlink); in fop_readlink()
3938 vnode_t *vp, in fop_fsync() argument
3945 VOPXID_MAP_CR(vp, cr); in fop_fsync()
3947 err = (*(vp)->v_op->vop_fsync)(vp, syncflag, cr, ct); in fop_fsync()
3948 VOPSTATS_UPDATE(vp, fsync); in fop_fsync()
3954 vnode_t *vp, in fop_inactive() argument
3959 VOPSTATS_UPDATE(vp, inactive); in fop_inactive()
3961 VOPXID_MAP_CR(vp, cr); in fop_inactive()
3963 (*(vp)->v_op->vop_inactive)(vp, cr, ct); in fop_inactive()
3968 vnode_t *vp, in fop_fid() argument
3974 err = (*(vp)->v_op->vop_fid)(vp, fidp, ct); in fop_fid()
3975 VOPSTATS_UPDATE(vp, fid); in fop_fid()
3981 vnode_t *vp, in fop_rwlock() argument
3987 ret = ((*(vp)->v_op->vop_rwlock)(vp, write_lock, ct)); in fop_rwlock()
3988 VOPSTATS_UPDATE(vp, rwlock); in fop_rwlock()
3994 vnode_t *vp, in fop_rwunlock() argument
3998 (*(vp)->v_op->vop_rwunlock)(vp, write_lock, ct); in fop_rwunlock()
3999 VOPSTATS_UPDATE(vp, rwunlock); in fop_rwunlock()
4004 vnode_t *vp, in fop_seek() argument
4011 err = (*(vp)->v_op->vop_seek)(vp, ooff, noffp, ct); in fop_seek()
4012 VOPSTATS_UPDATE(vp, seek); in fop_seek()
4031 vnode_t *vp, in fop_frlock() argument
4042 VOPXID_MAP_CR(vp, cr); in fop_frlock()
4044 err = (*(vp)->v_op->vop_frlock) in fop_frlock()
4045 (vp, cmd, bfp, flag, offset, flk_cbp, cr, ct); in fop_frlock()
4046 VOPSTATS_UPDATE(vp, frlock); in fop_frlock()
4052 vnode_t *vp, in fop_space() argument
4062 VOPXID_MAP_CR(vp, cr); in fop_space()
4064 err = (*(vp)->v_op->vop_space)(vp, cmd, bfp, flag, offset, cr, ct); in fop_space()
4065 VOPSTATS_UPDATE(vp, space); in fop_space()
4071 vnode_t *vp, in fop_realvp() argument
4077 err = (*(vp)->v_op->vop_realvp)(vp, vpp, ct); in fop_realvp()
4078 VOPSTATS_UPDATE(vp, realvp); in fop_realvp()
4084 vnode_t *vp, in fop_getpage() argument
4098 VOPXID_MAP_CR(vp, cr); in fop_getpage()
4100 err = (*(vp)->v_op->vop_getpage) in fop_getpage()
4101 (vp, off, len, protp, plarr, plsz, seg, addr, rw, cr, ct); in fop_getpage()
4102 VOPSTATS_UPDATE(vp, getpage); in fop_getpage()
4108 vnode_t *vp, in fop_putpage() argument
4117 VOPXID_MAP_CR(vp, cr); in fop_putpage()
4119 err = (*(vp)->v_op->vop_putpage)(vp, off, len, flags, cr, ct); in fop_putpage()
4120 VOPSTATS_UPDATE(vp, putpage); in fop_putpage()
4126 vnode_t *vp, in fop_map() argument
4139 VOPXID_MAP_CR(vp, cr); in fop_map()
4141 err = (*(vp)->v_op->vop_map) in fop_map()
4142 (vp, off, as, addrp, len, prot, maxprot, flags, cr, ct); in fop_map()
4143 VOPSTATS_UPDATE(vp, map); in fop_map()
4149 vnode_t *vp, in fop_addmap() argument
4163 VOPXID_MAP_CR(vp, cr); in fop_addmap()
4165 error = (*(vp)->v_op->vop_addmap) in fop_addmap()
4166 (vp, off, as, addr, len, prot, maxprot, flags, cr, ct); in fop_addmap()
4168 if ((!error) && (vp->v_type == VREG)) { in fop_addmap()
4175 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_addmap()
4183 atomic_add_64((uint64_t *)(&(vp->v_mmap_write)), in fop_addmap()
4186 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_addmap()
4189 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_addmap()
4193 VOPSTATS_UPDATE(vp, addmap); in fop_addmap()
4199 vnode_t *vp, in fop_delmap() argument
4213 VOPXID_MAP_CR(vp, cr); in fop_delmap()
4215 error = (*(vp)->v_op->vop_delmap) in fop_delmap()
4216 (vp, off, as, addr, len, prot, maxprot, flags, cr, ct); in fop_delmap()
4225 if ((error != EAGAIN) && (vp->v_type == VREG)) { in fop_delmap()
4230 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_delmap()
4238 atomic_add_64((uint64_t *)(&(vp->v_mmap_write)), in fop_delmap()
4241 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_delmap()
4244 atomic_add_64((uint64_t *)(&(vp->v_mmap_read)), in fop_delmap()
4248 VOPSTATS_UPDATE(vp, delmap); in fop_delmap()
4255 vnode_t *vp, in fop_poll() argument
4264 err = (*(vp)->v_op->vop_poll)(vp, events, anyyet, reventsp, phpp, ct); in fop_poll()
4265 VOPSTATS_UPDATE(vp, poll); in fop_poll()
4271 vnode_t *vp, in fop_dump() argument
4283 err = (*(vp)->v_op->vop_dump)(vp, addr, lbdn, dblks, ct); in fop_dump()
4284 VOPSTATS_UPDATE(vp, dump); in fop_dump()
4290 vnode_t *vp, in fop_pathconf() argument
4298 VOPXID_MAP_CR(vp, cr); in fop_pathconf()
4300 err = (*(vp)->v_op->vop_pathconf)(vp, cmd, valp, cr, ct); in fop_pathconf()
4301 VOPSTATS_UPDATE(vp, pathconf); in fop_pathconf()
4307 vnode_t *vp, in fop_pageio() argument
4317 VOPXID_MAP_CR(vp, cr); in fop_pageio()
4319 err = (*(vp)->v_op->vop_pageio)(vp, pp, io_off, io_len, flags, cr, ct); in fop_pageio()
4320 VOPSTATS_UPDATE(vp, pageio); in fop_pageio()
4326 vnode_t *vp, in fop_dumpctl() argument
4332 err = (*(vp)->v_op->vop_dumpctl)(vp, action, blkp, ct); in fop_dumpctl()
4333 VOPSTATS_UPDATE(vp, dumpctl); in fop_dumpctl()
4339 vnode_t *vp, in fop_dispose() argument
4347 VOPSTATS_UPDATE(vp, dispose); in fop_dispose()
4349 VOPXID_MAP_CR(vp, cr); in fop_dispose()
4351 (*(vp)->v_op->vop_dispose)(vp, pp, flag, dn, cr, ct); in fop_dispose()
4356 vnode_t *vp, in fop_setsecattr() argument
4364 VOPXID_MAP_CR(vp, cr); in fop_setsecattr()
4371 vfs_has_feature(vp->v_vfsp, VFSFT_ACEMASKONACCESS) == 0) { in fop_setsecattr()
4374 err = (*(vp)->v_op->vop_setsecattr) (vp, vsap, flag, cr, ct); in fop_setsecattr()
4375 VOPSTATS_UPDATE(vp, setsecattr); in fop_setsecattr()
4381 vnode_t *vp, in fop_getsecattr() argument
4394 vfs_has_feature(vp->v_vfsp, VFSFT_ACEMASKONACCESS) == 0) { in fop_getsecattr()
4398 VOPXID_MAP_CR(vp, cr); in fop_getsecattr()
4400 err = (*(vp)->v_op->vop_getsecattr) (vp, vsap, flag, cr, ct); in fop_getsecattr()
4401 VOPSTATS_UPDATE(vp, getsecattr); in fop_getsecattr()
4407 vnode_t *vp, in fop_shrlock() argument
4416 VOPXID_MAP_CR(vp, cr); in fop_shrlock()
4418 err = (*(vp)->v_op->vop_shrlock)(vp, cmd, shr, flag, cr, ct); in fop_shrlock()
4419 VOPSTATS_UPDATE(vp, shrlock); in fop_shrlock()
4424 fop_vnevent(vnode_t *vp, vnevent_t vnevent, vnode_t *dvp, char *fnm, in fop_vnevent() argument
4429 err = (*(vp)->v_op->vop_vnevent)(vp, vnevent, dvp, fnm, ct); in fop_vnevent()
4430 VOPSTATS_UPDATE(vp, vnevent); in fop_vnevent()
4435 fop_reqzcbuf(vnode_t *vp, enum uio_rw ioflag, xuio_t *uiop, cred_t *cr, in fop_reqzcbuf() argument
4440 if (vfs_has_feature(vp->v_vfsp, VFSFT_ZEROCOPY_SUPPORTED) == 0) in fop_reqzcbuf()
4442 err = (*(vp)->v_op->vop_reqzcbuf)(vp, ioflag, uiop, cr, ct); in fop_reqzcbuf()
4443 VOPSTATS_UPDATE(vp, reqzcbuf); in fop_reqzcbuf()
4448 fop_retzcbuf(vnode_t *vp, xuio_t *uiop, cred_t *cr, caller_context_t *ct) in fop_retzcbuf() argument
4452 if (vfs_has_feature(vp->v_vfsp, VFSFT_ZEROCOPY_SUPPORTED) == 0) in fop_retzcbuf()
4454 err = (*(vp)->v_op->vop_retzcbuf)(vp, uiop, cr, ct); in fop_retzcbuf()
4455 VOPSTATS_UPDATE(vp, retzcbuf); in fop_retzcbuf()
4588 vsd_get(vnode_t *vp, uint_t key) in vsd_get() argument
4592 ASSERT(vp != NULL); in vsd_get()
4593 ASSERT(mutex_owned(&vp->v_vsd_lock)); in vsd_get()
4595 vsd = vp->v_vsd; in vsd_get()
4607 vsd_set(vnode_t *vp, uint_t key, void *value) in vsd_set() argument
4611 ASSERT(vp != NULL); in vsd_set()
4612 ASSERT(mutex_owned(&vp->v_vsd_lock)); in vsd_set()
4617 vsd = vp->v_vsd; in vsd_set()
4619 vsd = vp->v_vsd = kmem_zalloc(sizeof (*vsd), KM_SLEEP); in vsd_set()
4662 vsd_free(vnode_t *vp) in vsd_free() argument
4665 struct vsd_node *vsd = vp->v_vsd; in vsd_free()
4672 vp->v_vsd = NULL; in vsd_free()
4700 vp->v_vsd = NULL; in vsd_free()
4755 vn_is_reparse(vnode_t *vp, cred_t *cr, caller_context_t *ct) in vn_is_reparse() argument
4760 if ((vp->v_type != VLNK) || in vn_is_reparse()
4761 !(vfs_has_feature(vp->v_vfsp, VFSFT_XVATTR))) in vn_is_reparse()
4769 if (VOP_GETATTR(vp, &xvattr.xva_vattr, 0, cr, ct)) in vn_is_reparse()