PERFORCE change 164365 for review

Aditya Sarawgi truncs at FreeBSD.org
Sun Jun 14 18:26:08 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=164365

Change 164365 by truncs at aditya on 2009/06/14 18:25:12

	Renaming to new directory structure.

Affected files ...

.. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_lookup.c#6 edit

Differences ...

==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_lookup.c#6 (text+ko) ====

@@ -111,7 +111,7 @@
     ((dt) > sizeof(dt_to_ext2_ft) / sizeof(dt_to_ext2_ft[0]) ?	\
     EXT2_FT_UNKNOWN : dt_to_ext2_ft[(dt)])
 
-static int	ext2_dirbadentry(struct vnode *dp, struct ext2_dir_entry_2 *de,
+static int	ext2_dirbadentry(struct vnode *dp, struct ext2fs_direct_2 *de,
 		    int entryoffsetinblock);
 
 /*
@@ -143,7 +143,7 @@
 	struct uio *uio = ap->a_uio;
 	int count, error;
 
-	struct ext2_dir_entry_2 *edp, *dp;
+	struct ext2fs_direct_2 *edp, *dp;
 	int ncookies;
 	struct dirent dstdp;
 	struct uio auio;
@@ -182,10 +182,10 @@
 	error = VOP_READ(ap->a_vp, &auio, 0, ap->a_cred);
 	if (error == 0) {
 		readcnt = count - auio.uio_resid;
-		edp = (struct ext2_dir_entry_2 *)&dirbuf[readcnt];
+		edp = (struct ext2fs_direct_2 *)&dirbuf[readcnt];
 		ncookies = 0;
 		bzero(&dstdp, offsetof(struct dirent, d_name));
-		for (dp = (struct ext2_dir_entry_2 *)dirbuf;
+		for (dp = (struct ext2fs_direct_2 *)dirbuf;
 		    !error && uio->uio_resid > 0 && dp < edp; ) {
 			/*-
 			 * "New" ext2fs directory entries differ in 3 ways
@@ -203,20 +203,20 @@
 			 * because ext2fs uses a machine-independent disk
 			 * layout.
 			 */
-			dstdp.d_fileno = dp->inode;
-			dstdp.d_type = FTTODT(dp->file_type);
-			dstdp.d_namlen = dp->name_len;
+			dstdp.d_fileno = dp->e2d_ino;
+			dstdp.d_type = FTTODT(dp->e2d_type);
+			dstdp.d_namlen = dp->e2d_namlen;
 			dstdp.d_reclen = GENERIC_DIRSIZ(&dstdp);
-			bcopy(dp->name, dstdp.d_name, dstdp.d_namlen);
+			bcopy(dp->e2d_name, dstdp.d_name, dstdp.d_namlen);
 			bzero(dstdp.d_name + dstdp.d_namlen,
 			    dstdp.d_reclen - offsetof(struct dirent, d_name) -
 			    dstdp.d_namlen);
 
-			if (dp->rec_len > 0) {
+			if (dp->e2d_reclen > 0) {
 				if(dstdp.d_reclen <= uio->uio_resid) {
 					/* advance dp */
-					dp = (struct ext2_dir_entry_2 *)
-					    ((char *)dp + dp->rec_len);
+					dp = (struct ext2fs_direct_2 *)
+					    ((char *)dp + dp->e2d_reclen);
 					error =
 					  uiomove(&dstdp, dstdp.d_reclen, uio);
 					if (!error)
@@ -240,11 +240,11 @@
 			cookies = malloc(ncookies * sizeof(u_long), M_TEMP,
 			       M_WAITOK);
 			off = startoffset;
-			for (dp = (struct ext2_dir_entry_2 *)dirbuf,
+			for (dp = (struct ext2fs_direct_2 *)dirbuf,
 			     cookiep = cookies, ecookies = cookies + ncookies;
 			     cookiep < ecookies;
-			     dp = (struct ext2_dir_entry_2 *)((caddr_t) dp + dp->rec_len)) {
-				off += dp->rec_len;
+			     dp = (struct ext2fs_direct_2 *)((caddr_t) dp + dp->e2d_reclen)) {
+				off += dp->e2d_reclen;
 				*cookiep++ = (u_long) off;
 			}
 			*ap->a_ncookies = ncookies;
@@ -298,7 +298,7 @@
 	struct vnode *vdp;		/* vnode for directory being searched */
 	struct inode *dp;		/* inode for directory being searched */
 	struct buf *bp;			/* a buffer of directory entries */
-	struct ext2_dir_entry_2 *ep;	/* the current directory entry */
+	struct ext2fs_direct_2 *ep;	/* the current directory entry */
 	int entryoffsetinblock;		/* offset of ep in bp's buffer */
 	enum {NONE, COMPACT, FOUND} slotstatus;
 	doff_t slotoffset;		/* offset of area with free space */
@@ -408,9 +408,9 @@
 		 * directory. Complete checks can be run by setting
 		 * "vfs.e2fs.dirchk" to be true.
 		 */
-		ep = (struct ext2_dir_entry_2 *)
+		ep = (struct ext2fs_direct_2 *)
 			((char *)bp->b_data + entryoffsetinblock);
-		if (ep->rec_len == 0 ||
+		if (ep->e2d_reclen == 0 ||
 		    (dirchk && ext2_dirbadentry(vdp, ep, entryoffsetinblock))) {
 			int i;
 			ext2_dirbad(dp, dp->i_offset, "mangled entry");
@@ -427,15 +427,15 @@
 		 * compaction is viable.
 		 */
 		if (slotstatus != FOUND) {
-			int size = ep->rec_len;
+			int size = ep->e2d_reclen;
 
-			if (ep->inode != 0)
-				size -= EXT2_DIR_REC_LEN(ep->name_len);
+			if (ep->e2d_ino != 0)
+				size -= EXT2_DIR_REC_LEN(ep->e2d_namlen);
 			if (size > 0) {
 				if (size >= slotneeded) {
 					slotstatus = FOUND;
 					slotoffset = dp->i_offset;
-					slotsize = ep->rec_len;
+					slotsize = ep->e2d_reclen;
 				} else if (slotstatus == NONE) {
 					slotfreespace += size;
 					if (slotoffset == -1)
@@ -443,7 +443,7 @@
 					if (slotfreespace >= slotneeded) {
 						slotstatus = COMPACT;
 						slotsize = dp->i_offset +
-						      ep->rec_len - slotoffset;
+						      ep->e2d_reclen - slotoffset;
 					}
 				}
 			}
@@ -452,25 +452,25 @@
 		/*
 		 * Check for a name match.
 		 */
-		if (ep->inode) {
-			namlen = ep->name_len;
+		if (ep->e2d_ino) {
+			namlen = ep->e2d_namlen;
 			if (namlen == cnp->cn_namelen &&
-			    !bcmp(cnp->cn_nameptr, ep->name,
+			    !bcmp(cnp->cn_nameptr, ep->e2d_name,
 				(unsigned)namlen)) {
 				/*
 				 * Save directory entry's inode number and
 				 * reclen in ndp->ni_ufs area, and release
 				 * directory buffer.
 				 */
-				dp->i_ino = ep->inode;
-				dp->i_reclen = ep->rec_len;
+				dp->i_ino = ep->e2d_ino;
+				dp->i_reclen = ep->e2d_reclen;
 				goto found;
 			}
 		}
 		prevoff = dp->i_offset;
-		dp->i_offset += ep->rec_len;
-		entryoffsetinblock += ep->rec_len;
-		if (ep->inode)
+		dp->i_offset += ep->e2d_reclen;
+		entryoffsetinblock += ep->e2d_reclen;
+		if (ep->e2d_ino)
 			enduseful = dp->i_offset;
 	}
 /* notfound: */
@@ -550,10 +550,10 @@
 	 * Check that directory length properly reflects presence
 	 * of this entry.
 	 */
-	if (entryoffsetinblock + EXT2_DIR_REC_LEN(ep->name_len)
+	if (entryoffsetinblock + EXT2_DIR_REC_LEN(ep->e2d_namlen)
 		> dp->i_size) {
 		ext2_dirbad(dp, dp->i_offset, "i_size too small");
-		dp->i_size = entryoffsetinblock+EXT2_DIR_REC_LEN(ep->name_len);
+		dp->i_size = entryoffsetinblock+EXT2_DIR_REC_LEN(ep->e2d_namlen);
 		dp->i_flag |= IN_CHANGE | IN_UPDATE;
 	}
 	brelse(bp);
@@ -709,20 +709,20 @@
 static int
 ext2_dirbadentry(dp, de, entryoffsetinblock)
 	struct vnode *dp;
-	struct ext2_dir_entry_2 *de;
+	struct ext2fs_direct_2 *de;
 	int entryoffsetinblock;
 {
 	int	DIRBLKSIZ = VTOI(dp)->i_e2fs->e2fs_bsize;
 
 	char * error_msg = NULL;
 
-	if (de->rec_len < EXT2_DIR_REC_LEN(1))
+	if (de->e2d_reclen < EXT2_DIR_REC_LEN(1))
 		error_msg = "rec_len is smaller than minimal";
-	else if (de->rec_len % 4 != 0)
+	else if (de->e2d_reclen % 4 != 0)
 		error_msg = "rec_len % 4 != 0";
-	else if (de->rec_len < EXT2_DIR_REC_LEN(de->name_len))
+	else if (de->e2d_reclen < EXT2_DIR_REC_LEN(de->e2d_namlen))
 		error_msg = "reclen is too small for name_len";
-	else if (entryoffsetinblock + de->rec_len > DIRBLKSIZ)
+	else if (entryoffsetinblock + de->e2d_reclen > DIRBLKSIZ)
 		error_msg = "directory entry across blocks";
 	/* else LATER
 	     if (de->inode > dir->i_sb->u.ext2_sb.s_es->s_inodes_count)
@@ -732,8 +732,8 @@
 	if (error_msg != NULL) {
 		printf("bad directory entry: %s\n", error_msg);
 		printf("offset=%d, inode=%lu, rec_len=%u, name_len=%u\n",
-			entryoffsetinblock, (unsigned long)de->inode,
-			de->rec_len, de->name_len);
+			entryoffsetinblock, (unsigned long)de->e2d_ino,
+			de->e2d_reclen, de->e2d_namlen);
 	}
 	return error_msg == NULL ? 0 : 1;
 }
@@ -752,10 +752,10 @@
 	struct vnode *dvp;
 	struct componentname *cnp;
 {
-	struct ext2_dir_entry_2 *ep, *nep;
+	struct ext2fs_direct_2 *ep, *nep;
 	struct inode *dp;
 	struct buf *bp;
-	struct ext2_dir_entry_2 newdir;
+	struct ext2fs_direct_2 newdir;
 	struct iovec aiov;
 	struct uio auio;
 	u_int dsize;
@@ -769,15 +769,15 @@
 		panic("direnter: missing name");
 #endif
 	dp = VTOI(dvp);
-	newdir.inode = ip->i_number;
-	newdir.name_len = cnp->cn_namelen;
+	newdir.e2d_ino = ip->i_number;
+	newdir.e2d_namlen = cnp->cn_namelen;
 	if (EXT2_HAS_INCOMPAT_FEATURE(ip->i_e2fs,
 	    EXT2F_INCOMPAT_FTYPE))
-		newdir.file_type = DTTOFT(IFTODT(ip->i_mode));
+		newdir.e2d_type = DTTOFT(IFTODT(ip->i_mode));
 	else
-		newdir.file_type = EXT2_FT_UNKNOWN;
-	bcopy(cnp->cn_nameptr, newdir.name, (unsigned)cnp->cn_namelen + 1);
-	newentrysize = EXT2_DIR_REC_LEN(newdir.name_len);
+		newdir.e2d_type = EXT2_FT_UNKNOWN;
+	bcopy(cnp->cn_nameptr, newdir.e2d_name, (unsigned)cnp->cn_namelen + 1);
+	newentrysize = EXT2_DIR_REC_LEN(newdir.e2d_namlen);
 	if (dp->i_count == 0) {
 		/*
 		 * If dp->i_count is 0, then namei could find no
@@ -788,7 +788,7 @@
 		if (dp->i_offset & (DIRBLKSIZ - 1))
 			panic("ext2_direnter: newblk");
 		auio.uio_offset = dp->i_offset;
-		newdir.rec_len = DIRBLKSIZ;
+		newdir.e2d_reclen = DIRBLKSIZ;
 		auio.uio_resid = newentrysize;
 		aiov.iov_len = newentrysize;
 		aiov.iov_base = (caddr_t)&newdir;
@@ -840,38 +840,38 @@
 	 * dp->i_offset + dp->i_count would yield the
 	 * space.
 	 */
-	ep = (struct ext2_dir_entry_2 *)dirbuf;
-	dsize = EXT2_DIR_REC_LEN(ep->name_len);
-	spacefree = ep->rec_len - dsize;
-	for (loc = ep->rec_len; loc < dp->i_count; ) {
-		nep = (struct ext2_dir_entry_2 *)(dirbuf + loc);
-		if (ep->inode) {
+	ep = (struct ext2fs_direct_2 *)dirbuf;
+	dsize = EXT2_DIR_REC_LEN(ep->e2d_namlen);
+	spacefree = ep->e2d_reclen - dsize;
+	for (loc = ep->e2d_reclen; loc < dp->i_count; ) {
+		nep = (struct ext2fs_direct_2 *)(dirbuf + loc);
+		if (ep->e2d_ino) {
 			/* trim the existing slot */
-			ep->rec_len = dsize;
-			ep = (struct ext2_dir_entry_2 *)((char *)ep + dsize);
+			ep->e2d_reclen = dsize;
+			ep = (struct ext2fs_direct_2 *)((char *)ep + dsize);
 		} else {
 			/* overwrite; nothing there; header is ours */
 			spacefree += dsize;
 		}
-		dsize = EXT2_DIR_REC_LEN(nep->name_len);
-		spacefree += nep->rec_len - dsize;
-		loc += nep->rec_len;
+		dsize = EXT2_DIR_REC_LEN(nep->e2d_namlen);
+		spacefree += nep->e2d_reclen - dsize;
+		loc += nep->e2d_reclen;
 		bcopy((caddr_t)nep, (caddr_t)ep, dsize);
 	}
 	/*
 	 * Update the pointer fields in the previous entry (if any),
 	 * copy in the new entry, and write out the block.
 	 */
-	if (ep->inode == 0) {
+	if (ep->e2d_ino == 0) {
 		if (spacefree + dsize < newentrysize)
 			panic("ext2_direnter: compact1");
-		newdir.rec_len = spacefree + dsize;
+		newdir.e2d_reclen = spacefree + dsize;
 	} else {
 		if (spacefree < newentrysize)
 			panic("ext2_direnter: compact2");
-		newdir.rec_len = spacefree;
-		ep->rec_len = dsize;
-		ep = (struct ext2_dir_entry_2 *)((char *)ep + dsize);
+		newdir.e2d_reclen = spacefree;
+		ep->e2d_reclen = dsize;
+		ep = (struct ext2fs_direct_2 *)((char *)ep + dsize);
 	}
 	bcopy((caddr_t)&newdir, (caddr_t)ep, (u_int)newentrysize);
 	error = bwrite(bp);
@@ -900,7 +900,7 @@
 	struct componentname *cnp;
 {
 	struct inode *dp;
-	struct ext2_dir_entry_2 *ep;
+	struct ext2fs_direct_2 *ep;
 	struct buf *bp;
 	int error;
 
@@ -913,7 +913,7 @@
 		    ext2_blkatoff(dvp, (off_t)dp->i_offset, (char **)&ep,
 		    &bp)) != 0)
 			return (error);
-		ep->inode = 0;
+		ep->e2d_ino = 0;
 		error = bwrite(bp);
 		dp->i_flag |= IN_CHANGE | IN_UPDATE;
 		return (error);
@@ -924,7 +924,7 @@
 	if ((error = ext2_blkatoff(dvp, (off_t)(dp->i_offset - dp->i_count),
 	    (char **)&ep, &bp)) != 0)
 		return (error);
-	ep->rec_len += dp->i_reclen;
+	ep->e2d_reclen += dp->i_reclen;
 	error = bwrite(bp);
 	dp->i_flag |= IN_CHANGE | IN_UPDATE;
 	return (error);
@@ -941,19 +941,19 @@
 	struct componentname *cnp;
 {
 	struct buf *bp;
-	struct ext2_dir_entry_2 *ep;
+	struct ext2fs_direct_2 *ep;
 	struct vnode *vdp = ITOV(dp);
 	int error;
 
 	if ((error = ext2_blkatoff(vdp, (off_t)dp->i_offset, (char **)&ep,
 	    &bp)) != 0)
 		return (error);
-	ep->inode = ip->i_number;
+	ep->e2d_ino = ip->i_number;
 	if (EXT2_HAS_INCOMPAT_FEATURE(ip->i_e2fs,
 	    EXT2F_INCOMPAT_FTYPE))
-		ep->file_type = DTTOFT(IFTODT(ip->i_mode));
+		ep->e2d_type = DTTOFT(IFTODT(ip->i_mode));
 	else
-		ep->file_type = EXT2_FT_UNKNOWN;
+		ep->e2d_type = EXT2_FT_UNKNOWN;
 	error = bwrite(bp);
 	dp->i_flag |= IN_CHANGE | IN_UPDATE;
 	return (error);
@@ -976,11 +976,11 @@
 {
 	off_t off;
 	struct dirtemplate dbuf;
-	struct ext2_dir_entry_2 *dp = (struct ext2_dir_entry_2 *)&dbuf;
+	struct ext2fs_direct_2 *dp = (struct ext2fs_direct_2 *)&dbuf;
 	int error, count, namlen;
 #define	MINDIRSIZ (sizeof (struct dirtemplate) / 2)
 
-	for (off = 0; off < ip->i_size; off += dp->rec_len) {
+	for (off = 0; off < ip->i_size; off += dp->e2d_reclen) {
 		error = vn_rdwr(UIO_READ, ITOV(ip), (caddr_t)dp, MINDIRSIZ,
 		    off, UIO_SYSSPACE, IO_NODELOCKED | IO_NOMACCHECK, cred,
 		    NOCRED, &count, (struct thread *)0);
@@ -991,16 +991,16 @@
 		if (error || count != 0)
 			return (0);
 		/* avoid infinite loops */
-		if (dp->rec_len == 0)
+		if (dp->e2d_reclen == 0)
 			return (0);
 		/* skip empty entries */
-		if (dp->inode == 0)
+		if (dp->e2d_ino == 0)
 			continue;
 		/* accept only "." and ".." */
-		namlen = dp->name_len;
+		namlen = dp->e2d_namlen;
 		if (namlen > 2)
 			return (0);
-		if (dp->name[0] != '.')
+		if (dp->e2d_name[0] != '.')
 			return (0);
 		/*
 		 * At this point namlen must be 1 or 2.
@@ -1009,7 +1009,7 @@
 		 */
 		if (namlen == 1)
 			continue;
-		if (dp->name[1] == '.' && dp->inode == parentino)
+		if (dp->e2d_name[1] == '.' && dp->e2d_ino == parentino)
 			continue;
 		return (0);
 	}


More information about the p4-projects mailing list