Lines Matching refs:dp

177 	struct inode *dp,
209 if (dp->i_ufsvfs)
210 ulp = &dp->i_ufsvfs->vfs_ulockfs;
216 dvp = ITOV(dp);
227 dcap = &dp->i_danchor;
237 ufs_tryirwlock((&dp->i_rwlock), RW_READER, retry_dircache);
244 if (dp->i_number == ep_ino) {
246 *ipp = dp;
247 rw_exit(&dp->i_rwlock);
257 rw_exit(&dp->i_rwlock);
258 rw_enter(&dp->i_ufsvfs->vfs_dqrwlock, RW_READER);
259 err = ufs_iget_alloced(dp->i_vfs, ep_ino, ipp, cr);
260 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
262 * must recheck as we dropped dp->i_rwlock
264 ufs_tryirwlock(&dp->i_rwlock, RW_READER, retry_parent);
273 rw_exit(&dp->i_rwlock);
283 rw_enter(&dp->i_ufsvfs->vfs_dqrwlock, RW_READER);
284 err = ufs_iget_alloced(dp->i_vfs, ep_ino, ipp, cr);
285 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
287 rw_exit(&dp->i_rwlock);
291 rw_exit(&dp->i_rwlock);
294 if (ufs_negative_cache && (dp->i_nlink > 0)) {
297 rw_exit(&dp->i_rwlock);
316 if (!skipcaching && (dp->i_size >= ufs_min_dir_cache)) {
321 if (dp->i_cachedir == CD_DISABLED_NOMEM &&
324 dp->i_cachedir = CD_ENABLED;
326 if (dp->i_cachedir == CD_ENABLED) {
327 switch (dnlc_dir_start(dcap, dp->i_size >>
330 dp->i_cachedir = CD_DISABLED_NOMEM;
334 dp->i_cachedir = CD_DISABLED_TOOBIG;
357 * Take care to look at dp->i_diroff only once, as it
360 offset = dp->i_diroff;
361 if (offset > dp->i_size) {
370 entryoffsetinblock = blkoff(dp->i_fs, offset);
372 err = blkatoff(dp, offset, (char **)0, &fbp);
379 endsearch = P2ROUNDUP_TYPED(dp->i_size, DIRBLKSIZ, u_offset_t);
390 if (blkoff(dp->i_fs, offset) == 0) {
394 err = blkatoff(dp, offset, (char **)0, &fbp);
417 dirmangled(dp, ep, entryoffsetinblock, offset)) {
441 dp->i_cachedir = CD_DISABLED;
487 dp->i_diroff = offset;
514 omtime = dp->i_mtime;
515 rw_exit(&dp->i_rwlock);
516 rw_enter(&dp->i_ufsvfs->vfs_dqrwlock,
518 err = ufs_iget_alloced(dp->i_vfs, ep_ino, ipp,
520 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
521 ufs_tryirwlock(&dp->i_rwlock, RW_READER,
536 if (timercmp(&omtime, &dp->i_mtime, !=)) {
555 } else if (dp->i_number == ep_ino) {
557 *ipp = dp;
563 rw_enter(&dp->i_ufsvfs->vfs_dqrwlock,
565 err = ufs_iget_alloced(dp->i_vfs, ep_ino, ipp,
567 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
579 rw_exit(&dp->i_rwlock);
582 err = blkatoff(dp, offset, (char **)0, &fbp);
607 if (ufs_negative_cache && (dp->i_nlink > 0)) {
630 rw_exit(&dp->i_rwlock);
1591 * Fix the ".." entry in sip to point to dp.
1653 * assumes that dp is a directory and that all the inodes are on
1658 struct inode *dp, /* child directory */
1682 rw_enter(&dp->i_rwlock, RW_WRITER);
1683 rw_enter(&dp->i_contents, RW_WRITER);
1684 err = blkatoff(dp, (off_t)0, (char **)&dirp, &fbp);
1688 if (dp->i_nlink <= 0 ||
1689 dp->i_size < sizeof (struct dirtemplate)) {
1697 dirbad(dp, "mangled .. entry", (off_t)0);
1718 dvp = ITOV(dp);
1721 (void) dnlc_dir_update(&dp->i_danchor, "..",
1724 err = TRANS_DIR(dp, 0);
1728 err = ufs_fbwrite(fbp, dp);
1734 rw_exit(&dp->i_contents);
1735 rw_exit(&dp->i_rwlock);
1755 rw_exit(&dp->i_contents);
1756 rw_exit(&dp->i_rwlock);
1955 struct inode *dp, /* directory we are working in */
1966 ASSERT(RW_WRITE_HELD(&dp->i_rwlock));
1967 ASSERT(RW_WRITE_HELD(&dp->i_contents));
1977 if (DIRBLKSIZ > dp->i_fs->fs_fsize) {
1978 err = ufs_fault(ITOV(dp),
1980 " > dp->i_fs->fs_fsize: %d (%s)",
1981 DIRBLKSIZ, dp->i_fs->fs_fsize, dp->i_fs->fs_fsmnt);
1987 err = BMAPALLOC(dp, (u_offset_t)slotp->offset,
1988 (int)(blkoff(dp->i_fs, slotp->offset) + DIRBLKSIZ), cr);
1992 dp->i_size = entryend;
1993 TRANS_INODE(dp->i_ufsvfs, dp);
1994 dp->i_flag |= IUPD|ICHG|IATTCHG;
1995 dp->i_seq++;
1996 ITIMES_NOLOCK(dp);
1997 } else if (entryend > dp->i_size) {
2004 dp->i_size = P2ROUNDUP_TYPED(entryend, DIRBLKSIZ, off_t);
2005 TRANS_INODE(dp->i_ufsvfs, dp);
2006 dp->i_flag |= IUPD|ICHG|IATTCHG;
2007 dp->i_seq++;
2008 ITIMES_NOLOCK(dp);
2015 err = blkatoff(dp, slotp->offset, (char **)&slotp->ep,
2308 * Write a prototype directory into the empty inode ip, whose parent is dp.
2313 struct inode *dp, /* parent directory */
2322 ASSERT(RW_WRITE_HELD(&dp->i_rwlock));
2323 ASSERT(RW_WRITE_HELD(&dp->i_contents));
2330 if (DIRBLKSIZ > dp->i_fs->fs_fsize) {
2331 err = ufs_fault(ITOV(dp),
2332 "ufs_dirmakedirect: bad fs_fsize, DIRBLKSIZ: %d > dp->i_fs->fs_fsize: %d (%s)",
2333 DIRBLKSIZ, dp->i_fs->fs_fsize,
2334 dp->i_fs->fs_fsmnt);
2346 if (dp->i_nlink == MAXLINK)
2349 dp->i_nlink++;
2350 TRANS_INODE(dp->i_ufsvfs, dp);
2351 dp->i_flag |= ICHG;
2352 dp->i_seq++;
2353 ufs_iupdat(dp, I_SYNC);
2376 dirp->dotdot_ino = (uint32_t)dp->i_number;
2393 dp->i_nlink--;
2394 TRANS_INODE(dp->i_ufsvfs, dp);
2395 dp->i_flag |= ICHG;
2396 dp->i_seq++;
2397 ufs_iupdat(dp, I_SYNC);
2407 struct inode *dp,
2425 struct fs *fs = dp->i_fs;
2429 fs->fs_fsmnt, (u_longlong_t)dp->i_number);
2446 ASSERT(RW_WRITE_HELD(&dp->i_rwlock));
2452 if (err = ufs_diraccess(dp, IEXEC|IWRITE, cr))
2458 rw_enter(&dp->i_ufsvfs->vfs_dqrwlock, RW_READER);
2459 rw_enter(&dp->i_contents, RW_WRITER);
2461 err = ufs_dircheckforname(dp, namep, namlen, &slot, &ip, cr, 0);
2502 * directory's (dp) i_rwlock and try again.
2503 * If we dont drop dp's i_rwlock then we will panic
2505 * since in ufs_dircheckpath we want dp's i_rwlock.
2506 * dp is guaranteed to exist since ufs_dirremove is
2507 * called after a VN_HOLD(dp) has been done.
2513 rw_exit(&dp->i_contents);
2514 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
2515 rw_exit(&dp->i_rwlock);
2518 rw_enter(&dp->i_rwlock, RW_WRITER);
2527 if ((err = ufs_sticky_remove_access(dp, ip, cr)) != 0) {
2543 if (dp == ip || vp == cdir)
2549 !ufs_dirempty(ip, dp->i_number, cr)) {
2578 dvp = ITOV(dp);
2584 dcanchor_t *dcap = &dp->i_danchor;
2656 err = TRANS_DIR(dp, slot.offset);
2660 err = ufs_fbwrite(slot.fbp, dp);
2677 dp->i_flag |= IUPD|ICHG;
2678 dp->i_seq++;
2682 TRANS_INODE(dp->i_ufsvfs, dp);
2696 * entry as well as removing the entry in dp.
2699 * Decrement the dp linkcount because we're
2703 dp->i_nlink--;
2704 ufs_setreclaim(dp);
2718 (void) ufs_dirpurgedotdot(ip, dp->i_number, cr);
2724 ITIMES_NOLOCK(dp);
2727 if (!TRANS_ISTRANS(dp->i_ufsvfs))
2728 ufs_iupdat(dp, I_SYNC);
2740 ASSERT(RW_WRITE_HELD(&dp->i_contents));
2745 rw_exit(&dp->i_contents);
2746 rw_exit(&dp->i_ufsvfs->vfs_dqrwlock);
2810 struct inode *dp,
2821 dirbad(dp, "mangled entry", offset);
2890 struct direct *dp = (struct direct *)&dbuf;
2898 for (off = 0; off < ip->i_size; off += dp->d_reclen) {
2899 err = ufs_rdwri(UIO_READ, FREAD, ip, (caddr_t)dp,
2905 if (err || count != 0 || dp->d_reclen == 0) {
2910 if (dp->d_ino == 0)
2913 if (dp->d_namlen > 2 || dp->d_name[0] != '.') {
2922 if (dp->d_namlen == 1)
2924 if (dp->d_name[1] == '.' &&
2925 (ino_t)dp->d_ino == parentino) {
2938 * dp as its cwd and try to
3112 struct direct *dp = (struct direct *)&dbuf;
3120 for (off = 0; off < ip->i_size; off += dp->d_reclen) {
3121 err = ufs_rdwri(UIO_READ, FREAD, ip, (caddr_t)dp,
3128 if (err || count != 0 || dp->d_reclen == 0) {
3133 if (dp->d_ino == 0)
3141 if (dp->d_namlen == 1 && dp->d_name[0] == '.' &&
3142 (ino_t)dp->d_ino == parentino)
3145 if (dp->d_namlen == 2 && dp->d_name[0] == '.' &&
3146 dp->d_name[1] == '.') {