Lines Matching refs:pn

251 static int	mqfs_allocv(struct mount *mp, struct vnode **vpp, struct mqfs_node *pn);
737 mqfs_allocv(struct mount *mp, struct vnode **vpp, struct mqfs_node *pn) in mqfs_allocv() argument
744 mqfs = pn->mn_info; in mqfs_allocv()
747 LIST_FOREACH(vd, &pn->mn_vnodes, mv_link) { in mqfs_allocv()
777 LIST_FOREACH(vd, &pn->mn_vnodes, mv_link) { in mqfs_allocv()
793 vd->mv_node = pn; in mqfs_allocv()
795 LIST_INSERT_HEAD(&pn->mn_vnodes, vd, mv_link); in mqfs_allocv()
796 mqnode_addref(pn); in mqfs_allocv()
797 switch (pn->mn_type) { in mqfs_allocv()
815 panic("%s has unexpected type: %d", pn->mn_name, pn->mn_type); in mqfs_allocv()
828 struct mqfs_node *pn; in mqfs_search() local
833 LIST_FOREACH(pn, &pd->mn_children, mn_sibling) { in mqfs_search()
835 if ((pn->mn_pr_root == NULL || pn->mn_pr_root == pr_root) && in mqfs_search()
836 strncmp(pn->mn_name, name, len) == 0 && in mqfs_search()
837 pn->mn_name[len] == '\0') in mqfs_search()
838 return (pn); in mqfs_search()
852 struct mqfs_node *pn; in mqfs_lookupx() local
867 pn = NULL; in mqfs_lookupx()
886 pn = pd; in mqfs_lookupx()
900 pn = pd->mn_parent; in mqfs_lookupx()
901 error = mqfs_allocv(dvp->v_mount, vpp, pn); in mqfs_lookupx()
908 pn = mqfs_search(pd, pname, namelen, cnp->cn_cred); in mqfs_lookupx()
909 if (pn != NULL) in mqfs_lookupx()
910 mqnode_addref(pn); in mqfs_lookupx()
914 if (pn != NULL) { in mqfs_lookupx()
919 mqnode_release(pn); in mqfs_lookupx()
925 mqnode_release(pn); in mqfs_lookupx()
931 error = mqfs_allocv(dvp->v_mount, vpp, pn); in mqfs_lookupx()
932 mqnode_release(pn); in mqfs_lookupx()
990 struct mqfs_node *pn; in mqfs_create() local
1001 pn = mqfs_create_file(pd, cnp->cn_nameptr, cnp->cn_namelen, in mqfs_create()
1003 if (pn == NULL) { in mqfs_create()
1007 mqnode_addref(pn); in mqfs_create()
1009 error = mqfs_allocv(ap->a_dvp->v_mount, ap->a_vpp, pn); in mqfs_create()
1010 mqnode_release(pn); in mqfs_create()
1012 mqfs_destroy(pn); in mqfs_create()
1014 pn->mn_data = mq; in mqfs_create()
1025 do_unlink(struct mqfs_node *pn, struct ucred *ucred) in do_unlink() argument
1031 sx_assert(&pn->mn_info->mi_lock, SX_LOCKED); in do_unlink()
1033 if (ucred->cr_uid != pn->mn_uid && in do_unlink()
1036 else if (!pn->mn_deleted) { in do_unlink()
1037 parent = pn->mn_parent; in do_unlink()
1038 pn->mn_parent = NULL; in do_unlink()
1039 pn->mn_deleted = 1; in do_unlink()
1040 LIST_REMOVE(pn, mn_sibling); in do_unlink()
1041 LIST_FOREACH(vd, &pn->mn_vnodes, mv_link) { in do_unlink()
1046 mqnode_release(pn); in do_unlink()
1068 struct mqfs_node *pn; in mqfs_remove() local
1073 pn = VTON(ap->a_vp); in mqfs_remove()
1075 error = do_unlink(pn, ap->a_cnp->cn_cred); in mqfs_remove()
1090 struct mqfs_node *pn = VTON(ap->a_vp); in mqfs_inactive() local
1092 if (pn->mn_deleted) in mqfs_inactive()
1109 struct mqfs_node *pn; in mqfs_reclaim() local
1113 pn = vd->mv_node; in mqfs_reclaim()
1117 mqnode_release(pn); in mqfs_reclaim()
1200 struct mqfs_node *pn = VTON(vp); in mqfs_getattr() local
1205 vap->va_mode = pn->mn_mode; in mqfs_getattr()
1207 vap->va_uid = pn->mn_uid; in mqfs_getattr()
1208 vap->va_gid = pn->mn_gid; in mqfs_getattr()
1210 vap->va_fileid = pn->mn_fileno; in mqfs_getattr()
1214 vap->va_atime = pn->mn_atime; in mqfs_getattr()
1215 vap->va_mtime = pn->mn_mtime; in mqfs_getattr()
1216 vap->va_ctime = pn->mn_ctime; in mqfs_getattr()
1217 vap->va_birthtime = pn->mn_birth; in mqfs_getattr()
1240 struct mqfs_node *pn; in mqfs_setattr() local
1263 pn = VTON(vp); in mqfs_setattr()
1267 uid = pn->mn_uid; in mqfs_setattr()
1271 gid = pn->mn_gid; in mqfs_setattr()
1275 if (uid != pn->mn_uid || gid != pn->mn_gid) { in mqfs_setattr()
1288 if ((ap->a_cred->cr_uid != pn->mn_uid || uid != pn->mn_uid || in mqfs_setattr()
1289 (gid != pn->mn_gid && !groupmember(gid, ap->a_cred))) && in mqfs_setattr()
1292 pn->mn_uid = uid; in mqfs_setattr()
1293 pn->mn_gid = gid; in mqfs_setattr()
1298 if (ap->a_cred->cr_uid != pn->mn_uid && in mqfs_setattr()
1301 pn->mn_mode = vap->va_mode; in mqfs_setattr()
1312 pn->mn_atime = vap->va_atime; in mqfs_setattr()
1315 pn->mn_mtime = vap->va_mtime; in mqfs_setattr()
1320 vfs_timestamp(&pn->mn_ctime); in mqfs_setattr()
1384 struct mqfs_node *pn; in mqfs_readdir() local
1415 LIST_FOREACH(pn, &pd->mn_children, mn_sibling) { in mqfs_readdir()
1422 if (pn->mn_pr_root != NULL && pn->mn_pr_root != pr_root) in mqfs_readdir()
1424 if (!pn->mn_fileno) in mqfs_readdir()
1425 mqfs_fileno_alloc(mi, pn); in mqfs_readdir()
1426 entry.d_fileno = pn->mn_fileno; in mqfs_readdir()
1428 for (i = 0; i < MQFS_NAMELEN - 1 && pn->mn_name[i] != '\0'; ++i) in mqfs_readdir()
1429 entry.d_name[i] = pn->mn_name[i]; in mqfs_readdir()
1431 switch (pn->mn_type) { in mqfs_readdir()
1445 panic("%s has unexpected node type: %d", pn->mn_name, in mqfs_readdir()
1446 pn->mn_type); in mqfs_readdir()
1488 struct mqfs_node *pn; in mqfs_mkdir() local
1494 pn = mqfs_create_dir(pd, cnp->cn_nameptr, cnp->cn_namelen, in mqfs_mkdir()
1496 if (pn != NULL) in mqfs_mkdir()
1497 mqnode_addref(pn); in mqfs_mkdir()
1499 if (pn == NULL) { in mqfs_mkdir()
1502 error = mqfs_allocv(ap->a_dvp->v_mount, ap->a_vpp, pn); in mqfs_mkdir()
1503 mqnode_release(pn); in mqfs_mkdir()
1523 struct mqfs_node *pn = VTON(ap->a_vp); in mqfs_rmdir() local
1526 if (pn->mn_type != mqfstype_dir) in mqfs_rmdir()
1530 if (pn->mn_deleted) { in mqfs_rmdir()
1535 pt = LIST_FIRST(&pn->mn_children); in mqfs_rmdir()
1542 pt = pn->mn_parent; in mqfs_rmdir()
1543 pn->mn_parent = NULL; in mqfs_rmdir()
1544 pn->mn_deleted = 1; in mqfs_rmdir()
1545 LIST_REMOVE(pn, mn_sibling); in mqfs_rmdir()
1546 mqnode_release(pn); in mqfs_rmdir()
1563 struct mqfs_node *pn, *tpn; in mqfs_prison_remove() local
1578 LIST_FOREACH_SAFE(pn, &mqfs_data.mi_root->mn_children, in mqfs_prison_remove()
1580 if (pn->mn_pr_root == pr_root) in mqfs_prison_remove()
1581 (void)do_unlink(pn, curthread->td_ucred); in mqfs_prison_remove()
2011 struct mqfs_node *pn; in kern_kmq_open() local
2060 pn = mqfs_search(mqfs_data.mi_root, path, len, td->td_ucred); in kern_kmq_open()
2061 if (pn == NULL) { in kern_kmq_open()
2069 pn = mqfs_create_file(mqfs_data.mi_root, in kern_kmq_open()
2072 if (pn == NULL) { in kern_kmq_open()
2080 pn->mn_data = mq; in kern_kmq_open()
2092 error = vaccess(VREG, pn->mn_mode, pn->mn_uid, in kern_kmq_open()
2093 pn->mn_gid, accmode, td->td_ucred); in kern_kmq_open()
2104 mqnode_addref(pn); in kern_kmq_open()
2107 finit(fp, flags & (FREAD | FWRITE | O_NONBLOCK), DTYPE_MQUEUE, pn, in kern_kmq_open()
2143 struct mqfs_node *pn; in sys_kmq_unlink() local
2163 pn = mqfs_search(mqfs_data.mi_root, path, len, td->td_ucred); in sys_kmq_unlink()
2164 if (pn != NULL) in sys_kmq_unlink()
2165 error = do_unlink(pn, td->td_ucred); in sys_kmq_unlink()
2181 struct mqfs_node *pn; in _getmq() local
2191 pn = (*fpp)->f_data; in _getmq()
2193 *ppn = pn; in _getmq()
2195 *pmq = pn->mn_data; in _getmq()
2554 struct mqfs_node *pn; in mqf_close() local
2557 pn = fp->f_data; in mqf_close()
2560 mqnode_release(pn); in mqf_close()
2568 struct mqfs_node *pn = fp->f_data; in mqf_stat() local
2572 st->st_atim = pn->mn_atime; in mqf_stat()
2573 st->st_mtim = pn->mn_mtime; in mqf_stat()
2574 st->st_ctim = pn->mn_ctime; in mqf_stat()
2575 st->st_birthtim = pn->mn_birth; in mqf_stat()
2576 st->st_uid = pn->mn_uid; in mqf_stat()
2577 st->st_gid = pn->mn_gid; in mqf_stat()
2578 st->st_mode = S_IFIFO | pn->mn_mode; in mqf_stat()
2587 struct mqfs_node *pn; in mqf_chmod() local
2591 pn = fp->f_data; in mqf_chmod()
2593 error = vaccess(VREG, pn->mn_mode, pn->mn_uid, pn->mn_gid, VADMIN, in mqf_chmod()
2597 pn->mn_mode = mode & ACCESSPERMS; in mqf_chmod()
2607 struct mqfs_node *pn; in mqf_chown() local
2611 pn = fp->f_data; in mqf_chown()
2614 uid = pn->mn_uid; in mqf_chown()
2616 gid = pn->mn_gid; in mqf_chown()
2617 if (((uid != pn->mn_uid && uid != active_cred->cr_uid) || in mqf_chown()
2618 (gid != pn->mn_gid && !groupmember(gid, active_cred))) && in mqf_chown()
2621 pn->mn_uid = uid; in mqf_chown()
2622 pn->mn_gid = gid; in mqf_chown()