Lines Matching full:dp

122 static int	ext2_check_direntry(struct vnode *dp,
147 struct ext2fs_direct_2 *dp, *edp; in ext2_readdir() local
193 dp = (struct ext2fs_direct_2 *)&bp->b_data[skipcnt]; in ext2_readdir()
195 while (error == 0 && uio->uio_resid > 0 && dp < edp) { in ext2_readdir()
196 if (le16toh(dp->e2d_reclen) <= offsetof(struct ext2fs_direct_2, in ext2_readdir()
197 e2d_namlen) || (caddr_t)dp + le16toh(dp->e2d_reclen) > in ext2_readdir()
218 dstdp.d_namlen = dp->e2d_namlen; in ext2_readdir()
219 dstdp.d_type = FTTODT(dp->e2d_type); in ext2_readdir()
221 dstdp.d_namlen > le16toh(dp->e2d_reclen)) { in ext2_readdir()
225 if (offset < startoffset || le32toh(dp->e2d_ino) == 0) in ext2_readdir()
227 dstdp.d_fileno = le32toh(dp->e2d_ino); in ext2_readdir()
229 bcopy(dp->e2d_name, dstdp.d_name, dstdp.d_namlen); in ext2_readdir()
231 dstdp.d_off = offset + le16toh(dp->e2d_reclen); in ext2_readdir()
240 /* Advance dp. */ in ext2_readdir()
247 *cookies = offset + le16toh(dp->e2d_reclen); in ext2_readdir()
252 offset += le16toh(dp->e2d_reclen); in ext2_readdir()
253 dp = (struct ext2fs_direct_2 *)((caddr_t)dp + in ext2_readdir()
254 le16toh(dp->e2d_reclen)); in ext2_readdir()
318 struct inode *dp; /* inode for directory being searched */ in ext2_lookup_ino() local
327 doff_t prevoff; /* prev entry dp->i_offset */ in ext2_lookup_ino()
328 struct vnode *pdp; /* saved dp during symlink work */ in ext2_lookup_ino()
345 dp = VTOI(vdp); in ext2_lookup_ino()
359 i_diroff = dp->i_diroff; in ext2_lookup_ino()
377 if (!ext2_is_dot_entry(cnp) && ext2_htree_has_idx(dp)) { in ext2_lookup_ino()
380 switch (ext2_htree_lookup(dp, cnp->cn_nameptr, cnp->cn_namelen, in ext2_lookup_ino()
388 i_offset = roundup2(dp->i_size, DIRBLKSIZ); in ext2_lookup_ino()
411 i_diroff > dp->i_size) { in ext2_lookup_ino()
425 endsearch = roundup2(dp->i_size, DIRBLKSIZ); in ext2_lookup_ino()
445 error = ext2_search_dirblock(dp, bp->b_data, &entry_found, in ext2_lookup_ino()
480 (flags & ISLASTCN) && dp->i_nlink != 0) { in ext2_lookup_ino()
490 * then set dp->i_count to 0 indicating in ext2_lookup_ino()
493 * can be put in the range from dp->i_offset to in ext2_lookup_ino()
494 * dp->i_offset + dp->i_count. in ext2_lookup_ino()
497 dp->i_offset = roundup2(dp->i_size, DIRBLKSIZ); in ext2_lookup_ino()
498 dp->i_count = 0; in ext2_lookup_ino()
499 enduseful = dp->i_offset; in ext2_lookup_ino()
501 dp->i_offset = ss.slotoffset; in ext2_lookup_ino()
502 dp->i_count = ss.slotsize; in ext2_lookup_ino()
506 dp->i_endoff = roundup2(enduseful, DIRBLKSIZ); in ext2_lookup_ino()
537 dp->i_size) { in ext2_lookup_ino()
538 ext2_dirbad(dp, i_offset, "i_size too small"); in ext2_lookup_ino()
550 dp->i_diroff = rounddown2(i_offset, DIRBLKSIZ); in ext2_lookup_ino()
564 * Return pointer to current entry in dp->i_offset, in ext2_lookup_ino()
566 * is a previous entry in this block) in dp->i_count. in ext2_lookup_ino()
574 dp->i_offset = i_offset; in ext2_lookup_ino()
575 if ((dp->i_offset & (DIRBLKSIZ - 1)) == 0) in ext2_lookup_ino()
576 dp->i_count = 0; in ext2_lookup_ino()
578 dp->i_count = dp->i_offset - prevoff; in ext2_lookup_ino()
581 if (dp->i_number == ino) { in ext2_lookup_ino()
595 if ((dp->i_mode & ISVTX) && in ext2_lookup_ino()
597 cred->cr_uid != dp->i_uid && in ext2_lookup_ino()
619 dp->i_offset = i_offset; in ext2_lookup_ino()
620 if (dp->i_number == ino) in ext2_lookup_ino()
677 } else if (dp->i_number == ino) { in ext2_lookup_ino()
815 ext2_check_direntry(struct vnode *dp, struct ext2fs_direct_2 *de, in ext2_check_direntry() argument
818 struct m_ext2fs *fs = VTOI(dp)->i_e2fs; in ext2_check_direntry()
854 struct inode *dp; in ext2_add_first_entry() local
860 dp = VTOI(dvp); in ext2_add_first_entry()
861 dirblksize = dp->i_e2fs->e2fs_bsize; in ext2_add_first_entry()
863 if (dp->i_offset & (dirblksize - 1)) in ext2_add_first_entry()
866 if (EXT2_HAS_RO_COMPAT_FEATURE(dp->i_e2fs, in ext2_add_first_entry()
873 ext2_dirent_csum_set(dp, (struct ext2fs_direct_2 *)buf); in ext2_add_first_entry()
875 auio.uio_offset = dp->i_offset; in ext2_add_first_entry()
881 auio.uio_offset = dp->i_offset; in ext2_add_first_entry()
896 dp->i_size = roundup2(dp->i_size, dirblksize); in ext2_add_first_entry()
897 dp->i_flag |= IN_CHANGE; in ext2_add_first_entry()
910 * (dp->i_offset, dp->i_count) indicate how the space for the new
916 struct inode *dp; in ext2_direnter() local
921 dp = VTOI(dvp); in ext2_direnter()
932 if (ext2_htree_has_idx(dp)) { in ext2_direnter()
935 dp->i_flag &= ~IN_E3INDEX; in ext2_direnter()
936 dp->i_flag |= IN_CHANGE | IN_UPDATE; in ext2_direnter()
942 !ext2_htree_has_idx(dp)) { in ext2_direnter()
943 if ((dp->i_size / DIRBLKSIZ) == 1 && in ext2_direnter()
944 dp->i_offset == DIRBLKSIZ) { in ext2_direnter()
954 * If dp->i_count is 0, then namei could find no in ext2_direnter()
955 * space in the directory. Here, dp->i_offset will in ext2_direnter()
959 if (dp->i_count == 0) in ext2_direnter()
963 if (!error && dp->i_endoff && dp->i_endoff < dp->i_size) in ext2_direnter()
964 error = ext2_truncate(dvp, (off_t)dp->i_endoff, IO_SYNC, in ext2_direnter()
977 struct inode *dp; in ext2_add_entry() local
983 dp = VTOI(dvp); in ext2_add_entry()
986 * If dp->i_count is non-zero, then namei found space in ext2_add_entry()
987 * for the new entry in the range dp->i_offset to in ext2_add_entry()
988 * dp->i_offset + dp->i_count in the directory. in ext2_add_entry()
1001 if (dp->i_offset + dp->i_count > dp->i_size) in ext2_add_entry()
1002 dp->i_size = dp->i_offset + dp->i_count; in ext2_add_entry()
1006 if ((error = ext2_blkatoff(dvp, (off_t)dp->i_offset, &dirbuf, in ext2_add_entry()
1012 * arranged that compacting the region dp->i_offset to in ext2_add_entry()
1013 * dp->i_offset + dp->i_count would yield the in ext2_add_entry()
1020 for (loc = le16toh(ep->e2d_reclen); loc < dp->i_count; ) { in ext2_add_entry()
1051 ext2_dirent_csum_set(dp, (struct ext2fs_direct_2 *)bp->b_data); in ext2_add_entry()
1058 dp->i_flag |= IN_CHANGE | IN_UPDATE; in ext2_add_entry()
1065 * dp->i_offset contains the offset into the directory of the
1066 * entry to be eliminated. The dp->i_count field contains the
1077 struct inode *dp; in ext2_dirremove() local
1082 dp = VTOI(dvp); in ext2_dirremove()
1083 if (dp->i_count == 0) { in ext2_dirremove()
1088 ext2_blkatoff(dvp, (off_t)dp->i_offset, (char **)&ep, in ext2_dirremove()
1092 ext2_dirent_csum_set(dp, (struct ext2fs_direct_2 *)bp->b_data); in ext2_dirremove()
1094 dp->i_flag |= IN_CHANGE | IN_UPDATE; in ext2_dirremove()
1100 if ((error = ext2_blkatoff(dvp, (off_t)(dp->i_offset - dp->i_count), in ext2_dirremove()
1105 if (dp->i_count == 0) in ext2_dirremove()
1111 ext2_dirent_csum_set(dp, (struct ext2fs_direct_2 *)bp->b_data); in ext2_dirremove()
1112 if (DOINGASYNC(dvp) && dp->i_count != 0) in ext2_dirremove()
1116 dp->i_flag |= IN_CHANGE | IN_UPDATE; in ext2_dirremove()
1126 ext2_dirrewrite(struct inode *dp, struct inode *ip, struct componentname *cnp) in ext2_dirrewrite() argument
1130 struct vnode *vdp = ITOV(dp); in ext2_dirrewrite()
1133 if ((error = ext2_blkatoff(vdp, (off_t)dp->i_offset, (char **)&ep, in ext2_dirrewrite()
1142 ext2_dirent_csum_set(dp, (struct ext2fs_direct_2 *)bp->b_data); in ext2_dirrewrite()
1144 dp->i_flag |= IN_CHANGE | IN_UPDATE; in ext2_dirrewrite()
1162 struct ext2fs_direct_2 *dp = (struct ext2fs_direct_2 *)&dbuf; in ext2_dirempty() local
1167 for (off = 0; off < ip->i_size; off += le16toh(dp->e2d_reclen)) { in ext2_dirempty()
1168 error = vn_rdwr(UIO_READ, ITOV(ip), (caddr_t)dp, MINDIRSIZ, in ext2_dirempty()
1178 if (dp->e2d_reclen == 0) in ext2_dirempty()
1181 if (dp->e2d_ino == 0) in ext2_dirempty()
1184 namlen = dp->e2d_namlen; in ext2_dirempty()
1187 if (dp->e2d_name[0] != '.') in ext2_dirempty()
1196 if (dp->e2d_name[1] == '.' && le32toh(dp->e2d_ino) == parentino) in ext2_dirempty()