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