Lines Matching refs:dir
236 struct tmpnode *dir, /* target directory to make entry in */ in tdirenter() argument
254 ASSERT(RW_WRITE_HELD(&dir->tn_rwlock)); in tdirenter()
255 ASSERT(dir->tn_type == VDIR); in tdirenter()
273 if (tp != dir) { in tdirenter()
325 VN_HOLD(TNTOV(dir)); in tdirenter()
326 rw_exit(&dir->tn_rwlock); in tdirenter()
328 rw_enter(&dir->tn_rwlock, RW_WRITER); in tdirenter()
329 VN_RELE(TNTOV(dir)); in tdirenter()
335 if (tp != dir) in tdirenter()
342 if (tp != dir) in tdirenter()
349 if (tp != dir) in tdirenter()
361 if (dir->tn_nlink == 0) { in tdirenter()
374 if (tp == dir) { in tdirenter()
379 if ((fromparent != dir) && in tdirenter()
380 (error = tdircheckpath(tp, dir, cred))) { in tdirenter()
389 tdp = tmpfs_hash_lookup(name, dir, 1, &found); in tdirenter()
406 dir, name, found, tdp, cred); in tdirenter()
410 TNTOV(dir), name, ctp); in tdirenter()
431 if (error = tmp_taccess(dir, VWRITE, cred)) in tdirenter()
437 error = tdirmaketnode(dir, tm, va, op, &tp, cred); in tdirenter()
441 if (error = tdiraddentry(dir, tp, name, op, fromparent)) { in tdirenter()
488 struct tmpnode *dir, in tdirdelete() argument
500 ASSERT(RW_WRITE_HELD(&dir->tn_rwlock)); in tdirdelete()
502 ASSERT(dir->tn_type == VDIR); in tdirdelete()
517 if (error = tmp_taccess(dir, VEXEC|VWRITE, cred)) in tdirdelete()
527 if ((error = tmp_sticky_remove_access(dir, tp, cred)) != 0) in tdirdelete()
530 if (dir->tn_dir == NULL) in tdirdelete()
533 tpdp = tmpfs_hash_lookup(nm, dir, 0, &tnp); in tdirdelete()
568 if (dir->tn_dir->td_prev == tpdp) { in tdirdelete()
569 dir->tn_dir->td_prev = tpdp->td_prev; in tdirdelete()
580 dir->tn_size -= (sizeof (struct tdirent) + namelen); in tdirdelete()
581 dir->tn_dirents--; in tdirdelete()
584 dir->tn_mtime = now; in tdirdelete()
585 dir->tn_ctime = now; in tdirdelete()
604 struct tmpnode *dir) /* the new directory */ in tdirinit() argument
610 ASSERT(dir->tn_type == VDIR); in tdirinit()
618 dot->td_tmpnode = dir; in tdirinit()
622 dot->td_parent = dir; in tdirinit()
630 dotdot->td_parent = dir; in tdirinit()
642 dir->tn_mtime = now; in tdirinit()
643 dir->tn_ctime = now; in tdirinit()
655 if (!(dir->tn_vnode->v_flag & V_XATTRDIR)) { in tdirinit()
660 dir->tn_dir = dot; in tdirinit()
661 dir->tn_size = 2 * sizeof (struct tdirent) + 5; /* dot and dotdot */ in tdirinit()
662 dir->tn_dirents = 2; in tdirinit()
663 dir->tn_nlink = 2; in tdirinit()
671 tdirtrunc(struct tmpnode *dir) in tdirtrunc() argument
679 ASSERT(RW_WRITE_HELD(&dir->tn_rwlock)); in tdirtrunc()
680 ASSERT(dir->tn_type == VDIR); in tdirtrunc()
682 isvattrdir = (dir->tn_vnode->v_flag & V_XATTRDIR) ? 1 : 0; in tdirtrunc()
683 for (tdp = dir->tn_dir; tdp; tdp = dir->tn_dir) { in tdirtrunc()
688 dir->tn_dir = tdp->td_next; in tdirtrunc()
714 dir->tn_size -= (sizeof (struct tdirent) + namelen); in tdirtrunc()
715 dir->tn_dirents--; in tdirtrunc()
719 dir->tn_mtime = now; in tdirtrunc()
720 dir->tn_ctime = now; in tdirtrunc()
722 ASSERT(dir->tn_dir == NULL); in tdirtrunc()
723 ASSERT(dir->tn_size == 0); in tdirtrunc()
724 ASSERT(dir->tn_dirents == 0); in tdirtrunc()
740 struct tmpnode *dir, *dotdot; in tdircheckpath() local
766 dir = dotdot; in tdircheckpath()
767 error = tdirlookup(dir, "..", &dotdot, cred); in tdircheckpath()
769 tmpnode_rele(dir); in tdircheckpath()
777 if (dir == dotdot) { in tdircheckpath()
778 tmpnode_rele(dir); in tdircheckpath()
782 tmpnode_rele(dir); in tdircheckpath()
960 struct tmpnode *dir, /* target directory to make entry in */ in tdiraddentry() argument
974 if (dir->tn_dir == NULL) in tdiraddentry()
980 if (tp->tn_vnode->v_vfsp != dir->tn_vnode->v_vfsp) in tdiraddentry()
993 tdirfixdotdot(tp, fromtp, dir); in tdiraddentry()
995 dir->tn_size += alloc_size; in tdiraddentry()
996 dir->tn_dirents++; in tdiraddentry()
998 tdp->td_parent = dir; in tdiraddentry()
1018 tpdp = dir->tn_dir->td_prev; in tdiraddentry()
1043 if (tpdp->td_next == NULL && tpdp->td_offset > 2 * dir->tn_dirents) in tdiraddentry()
1044 dir->tn_dir->td_prev = dir->tn_dir->td_next; in tdiraddentry()
1046 dir->tn_dir->td_prev = tdp; in tdiraddentry()
1064 dir->tn_mtime = now; in tdiraddentry()
1065 dir->tn_ctime = now; in tdiraddentry()
1072 struct tmpnode *dir, in tdirmaketnode() argument
1092 if (dir->tn_flags & ISXATTR) { in tdirmaketnode()
1118 ((va->va_gid == dir->tn_gid) || groupmember(va->va_gid, cred) || in tdirmaketnode()
1126 if (dir->tn_mode & VSGID) in tdirmaketnode()
1127 tp->tn_gid = dir->tn_gid; in tdirmaketnode()
1137 if (dir->tn_mode & VSGID && type == VDIR) in tdirmaketnode()
1151 tdirinit(dir, tp); in tdirmaketnode()