Lines Matching refs:fnp

173 	fnnode_t *fnp = vntofn(vp);  in auto_getattr()  local
220 mutex_enter(&fnp->fn_lock); in auto_getattr()
221 if (fnp->fn_seen == newvp && fnp->fn_thread == curthread) { in auto_getattr()
226 mutex_exit(&fnp->fn_lock); in auto_getattr()
229 while (fnp->fn_thread && fnp->fn_thread != curthread) { in auto_getattr()
230 fnp->fn_flags |= MF_ATTR_WAIT; in auto_getattr()
231 cv_wait(&fnp->fn_cv_mount, &fnp->fn_lock); in auto_getattr()
233 fnp->fn_thread = curthread; in auto_getattr()
234 fnp->fn_seen = newvp; in auto_getattr()
235 mutex_exit(&fnp->fn_lock); in auto_getattr()
238 mutex_enter(&fnp->fn_lock); in auto_getattr()
239 fnp->fn_seen = 0; in auto_getattr()
240 fnp->fn_thread = 0; in auto_getattr()
241 if (fnp->fn_flags & MF_ATTR_WAIT) { in auto_getattr()
242 fnp->fn_flags &= ~MF_ATTR_WAIT; in auto_getattr()
243 cv_broadcast(&fnp->fn_cv_mount); in auto_getattr()
245 mutex_exit(&fnp->fn_lock); in auto_getattr()
256 vap->va_nlink = fnp->fn_linkcnt; in auto_getattr()
257 vap->va_nodeid = (u_longlong_t)fnp->fn_nodeid; in auto_getattr()
258 vap->va_size = fnp->fn_size; in auto_getattr()
259 vap->va_atime = fnp->fn_atime; in auto_getattr()
260 vap->va_mtime = fnp->fn_mtime; in auto_getattr()
261 vap->va_ctime = fnp->fn_ctime; in auto_getattr()
263 vap->va_mode = fnp->fn_mode; in auto_getattr()
316 fnnode_t *fnp = vntofn(vp); in auto_access() local
339 if (crgetuid(cred) != fnp->fn_uid) { in auto_access()
341 if (groupmember(fnp->fn_gid, cred) == 0) in auto_access()
344 error = secpolicy_vnode_access2(cred, vp, fnp->fn_uid, in auto_access()
345 fnp->fn_mode << shift, mode); in auto_access()
371 fnnode_t *fnp = NULL; in auto_lookup() local
474 error = auto_search(dfnp, nm, &fnp, cred); in auto_lookup()
493 fnp = dfnp; in auto_lookup()
510 error = auto_search(dfnp, nm, &fnp, cred); in auto_lookup()
519 error = auto_enter(dfnp, nm, &fnp, kcred); in auto_lookup()
533 fnp = dfnp; in auto_lookup()
561 mutex_enter(&fnp->fn_lock); in auto_lookup()
563 if ((fnp->fn_flags & MF_LOOKUP) || in auto_lookup()
564 ((operation == AUTOFS_MOUNT) && (fnp->fn_flags & MF_INPROG))) { in auto_lookup()
565 mutex_exit(&fnp->fn_lock); in auto_lookup()
566 error = auto_wait4mount(fnp); in auto_lookup()
567 VN_RELE(fntovn(fnp)); in auto_lookup()
580 error = fnp->fn_error; in auto_lookup()
593 mutex_exit(&fnp->fn_lock); in auto_lookup()
595 *vpp = fntovn(fnp); in auto_lookup()
597 VN_RELE(fntovn(fnp)); in auto_lookup()
608 AUTOFS_BLOCK_OTHERS(fnp, MF_LOOKUP); in auto_lookup()
609 fnp->fn_error = 0; in auto_lookup()
610 mutex_exit(&fnp->fn_lock); in auto_lookup()
611 error = auto_lookup_aux(fnp, searchnm, cred); in auto_lookup()
616 *vpp = fntovn(fnp); in auto_lookup()
622 VN_RELE(fntovn(fnp)); in auto_lookup()
626 AUTOFS_BLOCK_OTHERS(fnp, MF_INPROG); in auto_lookup()
627 fnp->fn_error = 0; in auto_lookup()
628 mutex_exit(&fnp->fn_lock); in auto_lookup()
633 auto_new_mount_thread(fnp, searchnm, cred); in auto_lookup()
639 error = auto_wait4mount(fnp); in auto_lookup()
646 VN_RELE(fntovn(fnp)); in auto_lookup()
953 fnnode_t *fnp = vntofn(vp); in auto_readdir() local
981 gethrestime(&fnp->fn_atime); in auto_readdir()
982 fnp->fn_ref_time = fnp->fn_atime.tv_sec; in auto_readdir()
989 ASSERT(RW_READ_HELD(&fnp->fn_rwlock)); in auto_readdir()
996 rw_exit(&fnp->fn_rwlock); in auto_readdir()
1017 rw_enter(&fnp->fn_rwlock, RW_READER); in auto_readdir()
1045 if (auto_search(fnp, cdp->d_name, in auto_readdir()
1114 dp->d_ino = (ino64_t)fnp->fn_nodeid; in auto_readdir()
1131 dp->d_ino = (ino64_t)fnp->fn_parent->fn_nodeid; in auto_readdir()
1143 cfnp = fnp->fn_dirents; in auto_readdir()
1204 (fnp->fn_trigger != NULL) || in auto_readdir()
1206 ((fntovn(fnp->fn_parent))->v_flag & VROOT) && in auto_readdir()
1207 (fnp->fn_dirents == NULL))) { in auto_readdir()
1270 fnnode_t *fnp = vntofn(vp); in auto_readlink() local
1277 fnp->fn_ref_time = now.tv_sec; in auto_readlink()
1282 ASSERT(!(fnp->fn_flags & (MF_INPROG | MF_LOOKUP))); in auto_readlink()
1283 fnp->fn_atime = now; in auto_readlink()
1284 error = uiomove(fnp->fn_symlink, MIN(fnp->fn_symlinklen, in auto_readlink()
1303 fnnode_t *fnp = vntofn(vp); in auto_inactive() local
1304 fnnode_t *dfnp = fnp->fn_parent; in auto_inactive()
1308 (void *)vp, vp->v_count, fnp->fn_linkcnt)); in auto_inactive()
1327 if (fnp->fn_linkcnt == 1) { in auto_inactive()
1328 auto_disconnect(dfnp, fnp); in auto_inactive()
1330 auto_freefnnode(fnp); in auto_inactive()
1339 (void *)vp, vp->v_count, fnp->fn_linkcnt)); in auto_inactive()
1346 fnnode_t *fnp = vntofn(vp); in auto_rwlock() local
1348 rw_enter(&fnp->fn_rwlock, RW_WRITER); in auto_rwlock()
1350 rw_enter(&fnp->fn_rwlock, RW_READER); in auto_rwlock()
1358 fnnode_t *fnp = vntofn(vp); in auto_rwunlock() local
1359 rw_exit(&fnp->fn_rwlock); in auto_rwunlock()
1391 fnnode_t *fnp = vntofn(vp); in auto_trigger_mount() local
1412 mutex_enter(&fnp->fn_lock); in auto_trigger_mount()
1413 while (fnp->fn_flags & (MF_LOOKUP | MF_INPROG)) { in auto_trigger_mount()
1418 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()
1419 error = auto_wait4mount(fnp); in auto_trigger_mount()
1427 mutex_enter(&fnp->fn_lock); in auto_trigger_mount()
1440 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()
1456 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()
1462 if ((fnp->fn_flags & MF_MOUNTPOINT) && in auto_trigger_mount()
1463 fnp->fn_trigger != NULL) { in auto_trigger_mount()
1464 ASSERT(fnp->fn_dirents == NULL); in auto_trigger_mount()
1465 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()
1472 if (unmount_subtree(fnp, B_TRUE) != 0) { in auto_trigger_mount()
1481 dvp = fntovn(fnp->fn_parent); in auto_trigger_mount()
1483 if ((fnp->fn_dirents == NULL) && in auto_trigger_mount()
1495 ((fnip->fi_flags & MF_DIRECT) && (fnp->fn_dirents == NULL))) { in auto_trigger_mount()
1501 AUTOFS_BLOCK_OTHERS(fnp, MF_INPROG); in auto_trigger_mount()
1502 fnp->fn_error = 0; in auto_trigger_mount()
1503 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()
1505 (void) strcpy(name, fnp->fn_name); in auto_trigger_mount()
1508 fnp->fn_ref_time = gethrestime_sec(); in auto_trigger_mount()
1509 auto_new_mount_thread(fnp, name, cred); in auto_trigger_mount()
1514 error = auto_wait4mount(fnp); in auto_trigger_mount()
1535 mutex_exit(&fnp->fn_lock); in auto_trigger_mount()