Lines Matching refs:tdp

641 	struct inode *tdp,	/* target directory to make entry in */
661 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
663 if (((tdp->i_mode & IFMT) == IFATTRDIR) && ((op == DE_MKDIR) ||
678 if (err = ufs_diraccess(tdp, IEXEC, cr))
690 if (tdp->i_ufsvfs)
691 ulp = &tdp->i_ufsvfs->vfs_ulockfs;
692 rw_exit(&tdp->i_rwlock);
693 if (err = ufs_dirlook(tdp, namep, ipp, cr, 0, 0)) {
702 ufs_tryirwlock(&tdp->i_rwlock, RW_WRITER, retry_err);
708 ufs_tryirwlock(&tdp->i_rwlock, RW_WRITER, retry);
720 if (tdp->i_nlink <= 0) {
730 rw_enter(&tdp->i_ufsvfs->vfs_dqrwlock, RW_READER);
731 rw_enter(&tdp->i_contents, RW_WRITER);
732 err = ufs_dircheckforname(tdp, namep, namlen, &slot, &tip, cr, noentry);
744 if (err = ufs_iaccess(tdp, IWRITE, cr, 0))
749 tdp->i_flag |= quiet;
750 if (err = ufs_dirmakeinode(tdp, &nip, vap, op, cr)) {
755 if (err = ufs_diraddentry(tdp, namep, op,
763 tdp->i_nlink--;
764 ufs_setreclaim(tdp);
765 tdp->i_flag |= ICHG;
766 tdp->i_seq++;
767 TRANS_INODE(tdp->i_ufsvfs, tdp);
768 ITIMES_NOLOCK(tdp);
787 tdp->i_flag &= ~quiet;
788 rw_exit(&tdp->i_contents);
794 rw_exit(&tdp->i_ufsvfs->vfs_dqrwlock);
808 struct inode *tdp, /* target directory to make entry in */
826 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
903 if (tdp->i_nlink <= 0) {
911 if (err = ufs_diraccess(tdp, IEXEC, cr))
920 rw_enter(&tdp->i_ufsvfs->vfs_dqrwlock, RW_READER);
921 rw_enter(&tdp->i_contents, RW_WRITER);
922 err = ufs_dircheckforname(tdp, namep, namlen, &slot, &tip, cr, 0);
929 err = ufs_dirrename(sdp, sip, tdp, namep,
948 if (err = ufs_iaccess(tdp, IWRITE, cr, 0))
950 err = ufs_diraddentry(tdp, namep, op, namlen, &slot, sip, sdp,
958 rw_exit(&tdp->i_contents);
964 rw_exit(&tdp->i_ufsvfs->vfs_dqrwlock);
1002 * The target directory inode (tdp) is supplied write locked (i_rwlock).
1008 struct inode *tdp, /* inode of directory being checked */
1036 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
1037 ASSERT(RW_WRITE_HELD(&tdp->i_contents));
1044 dvp = ITOV(tdp);
1046 dcap = &tdp->i_danchor;
1061 if (tdp->i_number == ep_ino) {
1062 *ipp = tdp; /* we want ourself, ie "." */
1065 err = ufs_iget_alloced(tdp->i_vfs, ep_ino, ipp, cr);
1077 err = blkatoff(tdp, offset, (char **)&ep, &fbp);
1147 err = blkatoff(tdp, offset, (char **)&ep, &fbp);
1184 slotp->offset = P2ROUNDUP_TYPED(tdp->i_size,
1197 if (!noentry && tdp->i_size >= ufs_min_dir_cache) {
1202 if (tdp->i_cachedir == CD_DISABLED_NOMEM &&
1205 tdp->i_cachedir = CD_ENABLED;
1214 if (tdp->i_cachedir == CD_ENABLED) {
1216 tdp->i_size >> AV_DIRECT_SHIFT)) {
1218 tdp->i_cachedir = CD_DISABLED_NOMEM;
1222 tdp->i_cachedir = CD_DISABLED_TOOBIG;
1236 dirsize = P2ROUNDUP_TYPED(tdp->i_size, DIRBLKSIZ, u_offset_t);
1247 if (blkoff(tdp->i_fs, offset) == 0) {
1251 err = blkatoff(tdp, offset, (char **)0, &fbp);
1288 dirmangled(tdp, ep, entryoffsetinblk, offset)) {
1366 tdp->i_diroff = offset;
1368 if (tdp->i_number == ep->d_ino) {
1369 *ipp = tdp; /* we want ourself, ie "." */
1372 err = ufs_iget_alloced(tdp->i_vfs,
1445 * Rename the entry in the directory tdp so that it points to
1452 struct inode *tdp, /* parent directory of target */
1464 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
1465 ASSERT(RW_WRITE_HELD(&tdp->i_contents));
1501 if ((ITOV(tip)->v_vfsp != ITOV(tdp)->v_vfsp) ||
1510 if ((err = ufs_iaccess(tdp, IWRITE, cr, 0)) != 0 ||
1511 (err = ufs_sticky_remove_access(tdp, tip, cr)) != 0)
1542 if (!ufs_dirempty(tip, tdp->i_number, cr) || tip->i_nlink > 2) {
1558 tdvp = ITOV(tdp);
1567 (void) dnlc_dir_update(&tdp->i_danchor, namep,
1571 err = TRANS_DIR(tdp, slotp->offset);
1575 err = ufs_fbwrite(slotp->fbp, tdp);
1584 TRANS_INODE(tdp->i_ufsvfs, tdp);
1585 tdp->i_flag |= IUPD|ICHG;
1586 tdp->i_seq++;
1587 ITIMES_NOLOCK(tdp);
1630 tdp->i_nlink--;
1631 ufs_setreclaim(tdp);
1632 TRANS_INODE(tdp->i_ufsvfs, tdp);
1633 tdp->i_flag |= ICHG;
1634 tdp->i_seq++;
1635 ITIMES_NOLOCK(tdp);
1636 if (sdp != tdp) {
1639 err = ufs_dirfixdotdot(sip, sdp, tdp);
1761 * Enter the file sip in the directory tdp with name namep.
1765 struct inode *tdp,
1776 dcanchor_t *dcap = &tdp->i_danchor;
1781 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
1782 ASSERT(RW_WRITE_HELD(&tdp->i_contents));
1787 err = dirprepareentry(tdp, slotp, cr);
1799 if (ITOV(tdp)->v_vfsp != ITOV(sip)->v_vfsp) {
1809 ((sip->i_mode & IFMT) == IFATTRDIR)) && (sdp != tdp)) {
1810 err = ufs_dirfixdotdot(sip, sdp, tdp);
1822 tdvp = ITOV(tdp);
1873 err = TRANS_DIR(tdp, slotp->offset);
1877 err = ufs_fbwrite(slotp->fbp, tdp);
1895 TRANS_INODE(tdp->i_ufsvfs, tdp);
1896 tdp->i_flag |= IUPD|ICHG;
1897 tdp->i_seq++;
1898 tdp->i_diroff = 0;
1899 ITIMES_NOLOCK(tdp);
1902 * set IATTCHG in tdp->i_flag, then the directory inode must
1910 if (tdp->i_flag & IATTCHG) {
1911 ufs_iupdat(tdp, I_SYNC);
1914 if (slotp->endoff && (slotp->endoff < tdp->i_size)) {
1915 if (!TRANS_ISTRANS(tdp->i_ufsvfs)) {
1916 (void) ufs_itrunc(tdp, (u_offset_t)slotp->endoff, 0,
1942 if (TRANS_DIR(tdp, slotp->offset))
1945 (void) ufs_fbwrite(slotp->fbp, tdp);
2057 * Allocate and initialize a new inode that will go into directory tdp.
2062 struct inode *tdp,
2079 ASSERT(RW_WRITE_HELD(&tdp->i_rwlock));
2080 ASSERT(RW_WRITE_HELD(&tdp->i_contents));
2086 ipref = dirpref(tdp);
2088 ipref = tdp->i_number;
2095 err = ufs_ialloc(tdp, ipref, imode, &ip, cr);
2108 tdp->i_fs->fs_fsmnt);
2161 ((vap->va_gid == tdp->i_gid) || groupmember(vap->va_gid, cr) ||
2169 ip->i_gid = (tdp->i_mode & ISGID) ? tdp->i_gid : crgetgid(cr);
2190 if ((tdp->i_mode & ISGID) && (type == VDIR))
2213 err = ufs_dirmakedirect(ip, tdp, (op == DE_MKDIR) ? 0 : 1, cr);
2221 ASSERT((tdp->i_shadow && tdp->i_ufs_acl) ||
2222 (!tdp->i_shadow && !tdp->i_ufs_acl));
2223 if (tdp->i_shadow && tdp->i_ufs_acl &&
2224 (((tdp->i_mode & IFMT) == IFDIR) ||
2225 ((tdp->i_mode & IFMT) == IFATTRDIR))) {
2226 err = ufs_si_inherit(ip, tdp, ip->i_mode, cr);
2232 * tdp->i_contents already locked from
2235 tdp->i_nlink--;
2236 TRANS_INODE(tdp->i_ufsvfs, tdp);
2237 tdp->i_flag |= ICHG;
2238 tdp->i_seq++;
2239 ufs_iupdat(tdp, I_SYNC);
2283 if ((tdp->i_mode & IFMT) == IFATTRDIR) {
2343 * Update the tdp link count and write out the change.
3058 * this happens to be a sdp or tdp of another parallel rename
3161 struct inode *tdp,
3182 if ((err = ufs_iaccess(tdp, IWRITE, cr, 1)) != 0) {
3186 if (vn_is_readonly(ITOV(tdp)))
3196 va.va_uid = tdp->i_uid;
3197 va.va_gid = tdp->i_gid;
3199 if ((tdp->i_mode & IFMT) == IFDIR) {
3201 va.va_mode |= tdp->i_mode & 0777;
3204 if (tdp->i_mode & 0040)
3206 if (tdp->i_mode & 0004)
3211 ufsvfsp = tdp->i_ufsvfs;
3221 if (ITOV(tdp)->v_type != VDIR) {
3222 rw_enter(&tdp->i_rwlock, RW_WRITER);
3227 trans_size = (int)TOP_MKDIR_SIZE(tdp);
3237 rw_enter(&tdp->i_rwlock, RW_WRITER);
3241 rw_enter(&tdp->i_contents, RW_WRITER);
3247 tdp->i_flag |= IQUIET;
3248 err = ufs_dirmakeinode(tdp, &ip, &va, DE_ATTRDIR, cr);
3249 tdp->i_flag &= ~IQUIET;
3260 tdp->i_oeftflag = ip->i_number;
3265 TRANS_INODE(ufsvfsp, tdp);
3266 tdp->i_flag |= ICHG | IUPD;
3267 tdp->i_seq++;
3268 ufs_iupdat(tdp, I_SYNC);
3269 rw_exit(&tdp->i_contents);
3281 rw_exit(&tdp->i_rwlock);
3291 rw_exit(&tdp->i_rwlock);
3296 rw_exit(&tdp->i_contents);
3299 rw_exit(&tdp->i_rwlock);
3305 rw_exit(&tdp->i_rwlock);