Module Name: src
Committed By: dholland
Date: Sat Jun 8 02:14:46 UTC 2013
Modified Files:
src/sbin/fsck_lfs: dir.c inode.c pass1.c pass2.c
src/sbin/newfs_lfs: make_lfs.c
src/sys/ufs/lfs: lfs.h lfs_vfsops.c ulfs_dir.h ulfs_dirhash.c
ulfs_dirhash.h ulfs_extattr.c ulfs_lookup.c ulfs_rename.c
ulfs_vnops.c
Log Message:
DIRBLKSIZ -> LFS_DIRBLKSIZ
DIRECTSIZ -> LFS_DIRECTSIZ
DIRSIZ -> LFS_DIRSIZ
OLDDIRFMT -> LFS_OLDDIRFMT
NEWDIRFMT -> LFS_NEWDIRFMT
IFTODT -> LFS_IFTODT
DTTOIF -> LFS_DTTOIF
To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sbin/fsck_lfs/dir.c
cvs rdiff -u -r1.48 -r1.49 src/sbin/fsck_lfs/inode.c
cvs rdiff -u -r1.34 -r1.35 src/sbin/fsck_lfs/pass1.c
cvs rdiff -u -r1.21 -r1.22 src/sbin/fsck_lfs/pass2.c
cvs rdiff -u -r1.25 -r1.26 src/sbin/newfs_lfs/make_lfs.c
cvs rdiff -u -r1.145 -r1.146 src/sys/ufs/lfs/lfs.h
cvs rdiff -u -r1.303 -r1.304 src/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -u -r1.6 -r1.7 src/sys/ufs/lfs/ulfs_dir.h
cvs rdiff -u -r1.4 -r1.5 src/sys/ufs/lfs/ulfs_dirhash.c \
src/sys/ufs/lfs/ulfs_dirhash.h src/sys/ufs/lfs/ulfs_extattr.c
cvs rdiff -u -r1.8 -r1.9 src/sys/ufs/lfs/ulfs_lookup.c \
src/sys/ufs/lfs/ulfs_vnops.c
cvs rdiff -u -r1.5 -r1.6 src/sys/ufs/lfs/ulfs_rename.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/fsck_lfs/dir.c
diff -u src/sbin/fsck_lfs/dir.c:1.29 src/sbin/fsck_lfs/dir.c:1.30
--- src/sbin/fsck_lfs/dir.c:1.29 Sat Jun 8 02:12:56 2013
+++ src/sbin/fsck_lfs/dir.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.29 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: dir.c,v 1.30 2013/06/08 02:14:46 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -57,7 +57,7 @@ const char *lfname = "lost+found";
int lfmode = 01700;
struct lfs_dirtemplate emptydir = {
.dot_ino = 0,
- .dot_reclen = DIRBLKSIZ,
+ .dot_reclen = LFS_DIRBLKSIZ,
};
struct lfs_dirtemplate dirhead = {
.dot_ino = 0,
@@ -66,7 +66,7 @@ struct lfs_dirtemplate dirhead = {
.dot_namlen = 1,
.dot_name = ".",
.dotdot_ino = 0,
- .dotdot_reclen = DIRBLKSIZ - 12,
+ .dotdot_reclen = LFS_DIRBLKSIZ - 12,
.dotdot_type = LFS_DT_DIR,
.dotdot_namlen = 2,
.dotdot_name = ".."
@@ -77,7 +77,7 @@ struct lfs_odirtemplate odirhead = {
.dot_namlen = 1,
.dot_name = ".",
.dotdot_ino = 0,
- .dotdot_reclen = DIRBLKSIZ - 12,
+ .dotdot_reclen = LFS_DIRBLKSIZ - 12,
.dotdot_namlen = 2,
.dotdot_name = ".."
};
@@ -135,14 +135,14 @@ dirscan(struct inodesc *idesc)
struct ubuf *bp;
int dsize, n;
long blksiz;
- char dbuf[DIRBLKSIZ];
+ char dbuf[LFS_DIRBLKSIZ];
struct uvnode *vp;
if (idesc->id_type != DATA)
errexit("wrong type to dirscan %d", idesc->id_type);
if (idesc->id_entryno == 0 &&
- (idesc->id_filesize & (DIRBLKSIZ - 1)) != 0)
- idesc->id_filesize = roundup(idesc->id_filesize, DIRBLKSIZ);
+ (idesc->id_filesize & (LFS_DIRBLKSIZ - 1)) != 0)
+ idesc->id_filesize = roundup(idesc->id_filesize, LFS_DIRBLKSIZ);
blksiz = idesc->id_numfrags * fs->lfs_fsize;
if (chkrange(idesc->id_blkno, idesc->id_numfrags)) {
idesc->id_filesize -= blksiz;
@@ -181,7 +181,7 @@ fsck_readdir(struct uvnode *vp, struct i
blksiz = idesc->id_numfrags * fs->lfs_fsize;
bread(vp, idesc->id_lblkno, blksiz, NOCRED, 0, &bp);
- if (idesc->id_loc % DIRBLKSIZ == 0 && idesc->id_filesize > 0 &&
+ if (idesc->id_loc % LFS_DIRBLKSIZ == 0 && idesc->id_filesize > 0 &&
idesc->id_loc < blksiz) {
dp = (struct lfs_direct *) (bp->b_data + idesc->id_loc);
if (dircheck(idesc, dp))
@@ -192,7 +192,7 @@ fsck_readdir(struct uvnode *vp, struct i
fix = dofix(idesc, "DIRECTORY CORRUPTED");
bread(vp, idesc->id_lblkno, blksiz, NOCRED, 0, &bp);
dp = (struct lfs_direct *) (bp->b_data + idesc->id_loc);
- dp->d_reclen = DIRBLKSIZ;
+ dp->d_reclen = LFS_DIRBLKSIZ;
dp->d_ino = 0;
dp->d_type = 0;
dp->d_namlen = 0;
@@ -201,8 +201,8 @@ fsck_readdir(struct uvnode *vp, struct i
VOP_BWRITE(bp);
else
brelse(bp, 0);
- idesc->id_loc += DIRBLKSIZ;
- idesc->id_filesize -= DIRBLKSIZ;
+ idesc->id_loc += LFS_DIRBLKSIZ;
+ idesc->id_filesize -= LFS_DIRBLKSIZ;
return (dp);
}
dpok:
@@ -214,7 +214,7 @@ dpok:
dp = (struct lfs_direct *) (bp->b_data + dploc);
idesc->id_loc += dp->d_reclen;
idesc->id_filesize -= dp->d_reclen;
- if ((idesc->id_loc % DIRBLKSIZ) == 0) {
+ if ((idesc->id_loc % LFS_DIRBLKSIZ) == 0) {
brelse(bp, 0);
return dp;
}
@@ -222,7 +222,7 @@ dpok:
if (idesc->id_loc < blksiz && idesc->id_filesize > 0 &&
dircheck(idesc, ndp) == 0) {
brelse(bp, 0);
- size = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+ size = LFS_DIRBLKSIZ - (idesc->id_loc % LFS_DIRBLKSIZ);
idesc->id_loc += size;
idesc->id_filesize -= size;
if (idesc->id_fix == IGNORE)
@@ -253,7 +253,7 @@ dircheck(struct inodesc *idesc, struct l
u_char namlen, type;
int spaceleft;
- spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ);
+ spaceleft = LFS_DIRBLKSIZ - (idesc->id_loc % LFS_DIRBLKSIZ);
if (dp->d_ino >= maxino ||
dp->d_reclen == 0 ||
dp->d_reclen > spaceleft ||
@@ -267,7 +267,7 @@ dircheck(struct inodesc *idesc, struct l
}
if (dp->d_ino == 0)
return (1);
- size = DIRSIZ(0, dp, 0);
+ size = LFS_DIRSIZ(0, dp, 0);
namlen = dp->d_namlen;
type = dp->d_type;
if (dp->d_reclen < size ||
@@ -363,9 +363,9 @@ mkentry(struct inodesc *idesc)
int newlen, oldlen;
newent.d_namlen = strlen(idesc->id_name);
- newlen = DIRSIZ(0, &newent, 0);
+ newlen = LFS_DIRSIZ(0, &newent, 0);
if (dirp->d_ino != 0)
- oldlen = DIRSIZ(0, dirp, 0);
+ oldlen = LFS_DIRSIZ(0, dirp, 0);
else
oldlen = 0;
if (dirp->d_reclen - oldlen < newlen)
@@ -541,8 +541,8 @@ makeentry(ino_t parent, ino_t ino, const
idesc.id_name = name;
vp = vget(fs, parent);
dp = VTOD(vp);
- if (dp->di_size % DIRBLKSIZ) {
- dp->di_size = roundup(dp->di_size, DIRBLKSIZ);
+ if (dp->di_size % LFS_DIRBLKSIZ) {
+ dp->di_size = roundup(dp->di_size, LFS_DIRBLKSIZ);
inodirty(VTOI(vp));
}
if ((ckinode(dp, &idesc) & ALTERED) != 0)
@@ -563,7 +563,7 @@ expanddir(struct uvnode *vp, struct ulfs
{
daddr_t lastbn;
struct ubuf *bp;
- char *cp, firstblk[DIRBLKSIZ];
+ char *cp, firstblk[LFS_DIRBLKSIZ];
lastbn = lblkno(fs, dp->di_size);
if (lastbn >= ULFS_NDADDR - 1 || dp->di_db[lastbn] == 0 || dp->di_size == 0)
@@ -578,14 +578,14 @@ expanddir(struct uvnode *vp, struct ulfs
(long) dblksize(fs, dp, lastbn + 1), NOCRED, 0, &bp);
if (bp->b_flags & B_ERROR)
goto bad;
- memcpy(firstblk, bp->b_data, DIRBLKSIZ);
+ memcpy(firstblk, bp->b_data, LFS_DIRBLKSIZ);
bread(vp, lastbn, fs->lfs_bsize, NOCRED, 0, &bp);
if (bp->b_flags & B_ERROR)
goto bad;
- memcpy(bp->b_data, firstblk, DIRBLKSIZ);
- for (cp = &bp->b_data[DIRBLKSIZ];
+ memcpy(bp->b_data, firstblk, LFS_DIRBLKSIZ);
+ for (cp = &bp->b_data[LFS_DIRBLKSIZ];
cp < &bp->b_data[fs->lfs_bsize];
- cp += DIRBLKSIZ)
+ cp += LFS_DIRBLKSIZ)
memcpy(cp, &emptydir, sizeof emptydir);
VOP_BWRITE(bp);
bread(vp, dp->di_db[lastbn + 1],
@@ -635,9 +635,9 @@ allocdir(ino_t parent, ino_t request, in
return (0);
}
memcpy(bp->b_data, dirp, sizeof(struct lfs_dirtemplate));
- for (cp = &bp->b_data[DIRBLKSIZ];
+ for (cp = &bp->b_data[LFS_DIRBLKSIZ];
cp < &bp->b_data[fs->lfs_fsize];
- cp += DIRBLKSIZ)
+ cp += LFS_DIRBLKSIZ)
memcpy(cp, &emptydir, sizeof emptydir);
VOP_BWRITE(bp);
dp->di_nlink = 2;
Index: src/sbin/fsck_lfs/inode.c
diff -u src/sbin/fsck_lfs/inode.c:1.48 src/sbin/fsck_lfs/inode.c:1.49
--- src/sbin/fsck_lfs/inode.c:1.48 Sat Jun 8 02:12:56 2013
+++ src/sbin/fsck_lfs/inode.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: inode.c,v 1.48 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: inode.c,v 1.49 2013/06/08 02:14:46 dholland Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -619,7 +619,7 @@ allocino(ino_t request, int type)
dp->di_blocks = btofsb(fs, fs->lfs_fsize);
n_files++;
inodirty(VTOI(vp));
- typemap[ino] = IFTODT(type);
+ typemap[ino] = LFS_IFTODT(type);
return (ino);
}
Index: src/sbin/fsck_lfs/pass1.c
diff -u src/sbin/fsck_lfs/pass1.c:1.34 src/sbin/fsck_lfs/pass1.c:1.35
--- src/sbin/fsck_lfs/pass1.c:1.34 Sat Jun 8 02:11:11 2013
+++ src/sbin/fsck_lfs/pass1.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: pass1.c,v 1.34 2013/06/08 02:11:11 dholland Exp $ */
+/* $NetBSD: pass1.c,v 1.35 2013/06/08 02:14:46 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -293,7 +293,7 @@ checkinode(ino_t inumber, struct inodesc
brelse(bp, 0);
}
- typemap[inumber] = IFTODT(mode);
+ typemap[inumber] = LFS_IFTODT(mode);
badblk = dupblk = 0;
idesc->id_number = inumber;
(void) ckinode(VTOD(vp), idesc);
Index: src/sbin/fsck_lfs/pass2.c
diff -u src/sbin/fsck_lfs/pass2.c:1.21 src/sbin/fsck_lfs/pass2.c:1.22
--- src/sbin/fsck_lfs/pass2.c:1.21 Sat Jun 8 02:12:56 2013
+++ src/sbin/fsck_lfs/pass2.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: pass2.c,v 1.21 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: pass2.c,v 1.22 2013/06/08 02:14:46 dholland Exp $ */
/*
* Copyright (c) 1980, 1986, 1993
@@ -133,21 +133,21 @@ pass2(void)
continue;
if (inp->i_isize < MINDIRSIZE) {
direrror(inp->i_number, "DIRECTORY TOO SHORT");
- inp->i_isize = roundup(MINDIRSIZE, DIRBLKSIZ);
+ inp->i_isize = roundup(MINDIRSIZE, LFS_DIRBLKSIZ);
if (reply("FIX") == 1) {
vp = vget(fs, inp->i_number);
dp = VTOD(vp);
dp->di_size = inp->i_isize;
inodirty(VTOI(vp));
}
- } else if ((inp->i_isize & (DIRBLKSIZ - 1)) != 0) {
+ } else if ((inp->i_isize & (LFS_DIRBLKSIZ - 1)) != 0) {
getpathname(pathbuf, sizeof(pathbuf), inp->i_number,
inp->i_number);
pwarn("DIRECTORY %s: LENGTH %lu NOT MULTIPLE OF %d",
- pathbuf, (unsigned long) inp->i_isize, DIRBLKSIZ);
+ pathbuf, (unsigned long) inp->i_isize, LFS_DIRBLKSIZ);
if (preen)
printf(" (ADJUSTED)\n");
- inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ);
+ inp->i_isize = roundup(inp->i_isize, LFS_DIRBLKSIZ);
if (preen || reply("ADJUST") == 1) {
vp = vget(fs, inp->i_number);
dp = VTOD(vp);
@@ -235,7 +235,7 @@ pass2check(struct inodesc * idesc)
proto.d_type = LFS_DT_DIR;
proto.d_namlen = 1;
(void) strlcpy(proto.d_name, ".", sizeof(proto.d_name));
- entrysize = DIRSIZ(0, &proto, 0);
+ entrysize = LFS_DIRSIZ(0, &proto, 0);
if (dirp->d_ino != 0 && strcmp(dirp->d_name, "..") != 0) {
pfatal("CANNOT FIX, FIRST ENTRY IN DIRECTORY CONTAINS %s\n",
dirp->d_name);
@@ -266,9 +266,9 @@ chk1:
proto.d_type = LFS_DT_DIR;
proto.d_namlen = 2;
(void) strlcpy(proto.d_name, "..", sizeof(proto.d_name));
- entrysize = DIRSIZ(0, &proto, 0);
+ entrysize = LFS_DIRSIZ(0, &proto, 0);
if (idesc->id_entryno == 0) {
- n = DIRSIZ(0, dirp, 0);
+ n = LFS_DIRSIZ(0, dirp, 0);
if (dirp->d_reclen < n + entrysize)
goto chk2;
proto.d_reclen = dirp->d_reclen - n;
Index: src/sbin/newfs_lfs/make_lfs.c
diff -u src/sbin/newfs_lfs/make_lfs.c:1.25 src/sbin/newfs_lfs/make_lfs.c:1.26
--- src/sbin/newfs_lfs/make_lfs.c:1.25 Sat Jun 8 02:12:56 2013
+++ src/sbin/newfs_lfs/make_lfs.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: make_lfs.c,v 1.25 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: make_lfs.c,v 1.26 2013/06/08 02:14:46 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
#if 0
static char sccsid[] = "@(#)lfs.c 8.5 (Berkeley) 5/24/95";
#else
-__RCSID("$NetBSD: make_lfs.c,v 1.25 2013/06/08 02:12:56 dholland Exp $");
+__RCSID("$NetBSD: make_lfs.c,v 1.26 2013/06/08 02:14:46 dholland Exp $");
#endif
#endif /* not lint */
@@ -285,16 +285,16 @@ make_dir(void *bufp, struct lfs_direct *
char *cp;
int i, spcleft;
- spcleft = DIRBLKSIZ;
+ spcleft = LFS_DIRBLKSIZ;
for (cp = bufp, i = 0; i < entries - 1; i++) {
- protodir[i].d_reclen = DIRSIZ(NEWDIRFMT, &protodir[i], 0);
+ protodir[i].d_reclen = LFS_DIRSIZ(LFS_NEWDIRFMT, &protodir[i], 0);
memmove(cp, &protodir[i], protodir[i].d_reclen);
cp += protodir[i].d_reclen;
if ((spcleft -= protodir[i].d_reclen) < 0)
fatal("%s: %s", special, "directory too big");
}
protodir[i].d_reclen = spcleft;
- memmove(cp, &protodir[i], DIRSIZ(NEWDIRFMT, &protodir[i], 0));
+ memmove(cp, &protodir[i], LFS_DIRSIZ(LFS_NEWDIRFMT, &protodir[i], 0));
}
int
@@ -679,21 +679,21 @@ make_lfs(int devfd, uint secsize, struct
/* Initialize root directory */
vp = lfs_raw_vget(fs, ULFS_ROOTINO, devfd, 0x0);
dip = VTOI(vp)->i_din.ffs1_din;
- make_dinode(ULFS_ROOTINO, dip, howmany(DIRBLKSIZ,fs->lfs_fsize), fs);
+ make_dinode(ULFS_ROOTINO, dip, howmany(LFS_DIRBLKSIZ,fs->lfs_fsize), fs);
dip->di_mode = LFS_IFDIR | UMASK;
- VTOI(vp)->i_lfs_osize = dip->di_size = DIRBLKSIZ;
+ VTOI(vp)->i_lfs_osize = dip->di_size = LFS_DIRBLKSIZ;
#ifdef MAKE_LF_DIR
VTOI(vp)->i_nlink = dip->di_nlink = 3;
#else
VTOI(vp)->i_nlink = dip->di_nlink = 2;
#endif
VTOI(vp)->i_lfs_effnblks = dip->di_blocks =
- btofsb(fs, roundup(DIRBLKSIZ,fs->lfs_fsize));
- for (i = 0; i < ULFS_NDADDR && i < howmany(DIRBLKSIZ, fs->lfs_bsize); i++)
+ btofsb(fs, roundup(LFS_DIRBLKSIZ,fs->lfs_fsize));
+ for (i = 0; i < ULFS_NDADDR && i < howmany(LFS_DIRBLKSIZ, fs->lfs_bsize); i++)
VTOI(vp)->i_lfs_fragsize[i] = fs->lfs_bsize;
- if (DIRBLKSIZ < fs->lfs_bsize)
+ if (LFS_DIRBLKSIZ < fs->lfs_bsize)
VTOI(vp)->i_lfs_fragsize[i - 1] =
- roundup(DIRBLKSIZ,fs->lfs_fsize);
+ roundup(LFS_DIRBLKSIZ,fs->lfs_fsize);
bread(vp, 0, fs->lfs_fsize, NOCRED, 0, &bp);
make_dir(bp->b_data, lfs_root_dir,
sizeof(lfs_root_dir) / sizeof(struct lfs_direct));
Index: src/sys/ufs/lfs/lfs.h
diff -u src/sys/ufs/lfs/lfs.h:1.145 src/sys/ufs/lfs/lfs.h:1.146
--- src/sys/ufs/lfs/lfs.h:1.145 Sat Jun 8 02:13:33 2013
+++ src/sys/ufs/lfs/lfs.h Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs.h,v 1.145 2013/06/08 02:13:33 dholland Exp $ */
+/* $NetBSD: lfs.h,v 1.146 2013/06/08 02:14:46 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -202,6 +202,63 @@ typedef struct lfs_res_blk {
*/
/*
+ * A directory consists of some number of blocks of LFS_DIRBLKSIZ
+ * bytes, where LFS_DIRBLKSIZ is chosen such that it can be transferred
+ * to disk in a single atomic operation (e.g. 512 bytes on most machines).
+ *
+ * Each LFS_DIRBLKSIZ byte block contains some number of directory entry
+ * structures, which are of variable length. Each directory entry has
+ * a struct lfs_direct at the front of it, containing its inode number,
+ * the length of the entry, and the length of the name contained in
+ * the entry. These are followed by the name padded to a 4 byte boundary.
+ * All names are guaranteed null terminated.
+ * The maximum length of a name in a directory is LFS_MAXNAMLEN.
+ *
+ * The macro DIRSIZ(fmt, dp) gives the amount of space required to represent
+ * a directory entry. Free space in a directory is represented by
+ * entries which have dp->d_reclen > DIRSIZ(fmt, dp). All LFS_DIRBLKSIZ bytes
+ * in a directory block are claimed by the directory entries. This
+ * usually results in the last entry in a directory having a large
+ * dp->d_reclen. When entries are deleted from a directory, the
+ * space is returned to the previous entry in the same directory
+ * block by increasing its dp->d_reclen. If the first entry of
+ * a directory block is free, then its dp->d_ino is set to 0.
+ * Entries other than the first in a directory do not normally have
+ * dp->d_ino set to 0.
+ */
+
+/*
+ * Directory block size.
+ */
+#undef LFS_DIRBLKSIZ
+#define LFS_DIRBLKSIZ DEV_BSIZE
+
+/*
+ * Convert between stat structure types and directory types.
+ */
+#define LFS_IFTODT(mode) (((mode) & 0170000) >> 12)
+#define LFS_DTTOIF(dirtype) ((dirtype) << 12)
+
+/*
+ * The LFS_DIRSIZ macro gives the minimum record length which will hold
+ * the directory entry. This requires the amount of space in struct lfs_direct
+ * without the d_name field, plus enough space for the name with a terminating
+ * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
+ */
+#define LFS_DIRECTSIZ(namlen) \
+ ((sizeof(struct lfs_direct) - (LFS_MAXNAMLEN+1)) + (((namlen)+1 + 3) &~ 3))
+
+#if (BYTE_ORDER == LITTLE_ENDIAN)
+#define LFS_DIRSIZ(oldfmt, dp, needswap) \
+ (((oldfmt) && !(needswap)) ? \
+ LFS_DIRECTSIZ((dp)->d_type) : LFS_DIRECTSIZ((dp)->d_namlen))
+#else
+#define LFS_DIRSIZ(oldfmt, dp, needswap) \
+ (((oldfmt) && (needswap)) ? \
+ LFS_DIRECTSIZ((dp)->d_type) : LFS_DIRECTSIZ((dp)->d_namlen))
+#endif
+
+/*
* Theoretically, directories can be more than 2Gb in length; however, in
* practice this seems unlikely. So, we define the type doff_t as a 32-bit
* quantity to keep down the cost of doing lookup on a 32-bit machine.
Index: src/sys/ufs/lfs/lfs_vfsops.c
diff -u src/sys/ufs/lfs/lfs_vfsops.c:1.303 src/sys/ufs/lfs/lfs_vfsops.c:1.304
--- src/sys/ufs/lfs/lfs_vfsops.c:1.303 Sat Jun 8 02:11:11 2013
+++ src/sys/ufs/lfs/lfs_vfsops.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_vfsops.c,v 1.303 2013/06/08 02:11:11 dholland Exp $ */
+/* $NetBSD: lfs_vfsops.c,v 1.304 2013/06/08 02:14:46 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.303 2013/06/08 02:11:11 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.304 2013/06/08 02:14:46 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_lfs.h"
@@ -1027,7 +1027,7 @@ lfs_mountfs(struct vnode *devvp, struct
for (i = 0; i < ULFS_MAXQUOTAS; i++)
ump->um_quotas[i] = NULLVP;
ump->um_maxsymlinklen = fs->lfs_maxsymlinklen;
- ump->um_dirblksiz = DIRBLKSIZ;
+ ump->um_dirblksiz = LFS_DIRBLKSIZ;
ump->um_maxfilesize = fs->lfs_maxfilesize;
if (ump->um_maxsymlinklen > 0)
mp->mnt_iflag |= IMNT_DTYPE;
Index: src/sys/ufs/lfs/ulfs_dir.h
diff -u src/sys/ufs/lfs/ulfs_dir.h:1.6 src/sys/ufs/lfs/ulfs_dir.h:1.7
--- src/sys/ufs/lfs/ulfs_dir.h:1.6 Sat Jun 8 02:13:33 2013
+++ src/sys/ufs/lfs/ulfs_dir.h Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_dir.h,v 1.6 2013/06/08 02:13:33 dholland Exp $ */
+/* $NetBSD: ulfs_dir.h,v 1.7 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: dir.h,v 1.21 2009/07/22 04:49:19 dholland Exp */
/*
@@ -40,60 +40,7 @@
#ifndef _UFS_LFS_ULFS_DIR_H_
#define _UFS_LFS_ULFS_DIR_H_
-/*
- * A directory consists of some number of blocks of DIRBLKSIZ
- * bytes, where DIRBLKSIZ is chosen such that it can be transferred
- * to disk in a single atomic operation (e.g. 512 bytes on most machines).
- *
- * Each DIRBLKSIZ byte block contains some number of directory entry
- * structures, which are of variable length. Each directory entry has
- * a struct lfs_direct at the front of it, containing its inode number,
- * the length of the entry, and the length of the name contained in
- * the entry. These are followed by the name padded to a 4 byte boundary.
- * All names are guaranteed null terminated.
- * The maximum length of a name in a directory is LFS_MAXNAMLEN.
- *
- * The macro DIRSIZ(fmt, dp) gives the amount of space required to represent
- * a directory entry. Free space in a directory is represented by
- * entries which have dp->d_reclen > DIRSIZ(fmt, dp). All DIRBLKSIZ bytes
- * in a directory block are claimed by the directory entries. This
- * usually results in the last entry in a directory having a large
- * dp->d_reclen. When entries are deleted from a directory, the
- * space is returned to the previous entry in the same directory
- * block by increasing its dp->d_reclen. If the first entry of
- * a directory block is free, then its dp->d_ino is set to 0.
- * Entries other than the first in a directory do not normally have
- * dp->d_ino set to 0.
- */
-#undef DIRBLKSIZ
-#define DIRBLKSIZ DEV_BSIZE
-
-/*
- * Convert between stat structure types and directory types.
- */
-#define IFTODT(mode) (((mode) & 0170000) >> 12)
-#define DTTOIF(dirtype) ((dirtype) << 12)
-
-/*
- * The DIRSIZ macro gives the minimum record length which will hold
- * the directory entry. This requires the amount of space in struct lfs_direct
- * without the d_name field, plus enough space for the name with a terminating
- * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
- */
-#define DIRECTSIZ(namlen) \
- ((sizeof(struct lfs_direct) - (LFS_MAXNAMLEN+1)) + (((namlen)+1 + 3) &~ 3))
-
-#if (BYTE_ORDER == LITTLE_ENDIAN)
-#define DIRSIZ(oldfmt, dp, needswap) \
- (((oldfmt) && !(needswap)) ? \
- DIRECTSIZ((dp)->d_type) : DIRECTSIZ((dp)->d_namlen))
-#else
-#define DIRSIZ(oldfmt, dp, needswap) \
- (((oldfmt) && (needswap)) ? \
- DIRECTSIZ((dp)->d_type) : DIRECTSIZ((dp)->d_namlen))
-#endif
-
-#define OLDDIRFMT 1
-#define NEWDIRFMT 0
+#define LFS_OLDDIRFMT 1
+#define LFS_NEWDIRFMT 0
#endif /* !_UFS_LFS_ULFS_DIR_H_ */
Index: src/sys/ufs/lfs/ulfs_dirhash.c
diff -u src/sys/ufs/lfs/ulfs_dirhash.c:1.4 src/sys/ufs/lfs/ulfs_dirhash.c:1.5
--- src/sys/ufs/lfs/ulfs_dirhash.c:1.4 Sat Jun 8 02:12:56 2013
+++ src/sys/ufs/lfs/ulfs_dirhash.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_dirhash.c,v 1.4 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: ulfs_dirhash.c,v 1.5 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: ufs_dirhash.c,v 1.34 2009/10/05 23:48:08 rmind Exp */
/*
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_dirhash.c,v 1.4 2013/06/08 02:12:56 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_dirhash.c,v 1.5 2013/06/08 02:14:46 dholland Exp $");
/*
* This implements a hash-based lookup scheme for ULFS directories.
@@ -147,7 +147,7 @@ ulfsdirhash_build(struct inode *ip)
vp = ip->i_vnode;
/* Allocate 50% more entries than this dir size could ever need. */
KASSERT(ip->i_size >= dirblksiz);
- nslots = ip->i_size / DIRECTSIZ(1);
+ nslots = ip->i_size / LFS_DIRECTSIZ(1);
nslots = (nslots * 3 + 1) / 2;
narrays = howmany(nslots, DH_NBLKOFF);
nslots = narrays * DH_NBLKOFF;
@@ -240,7 +240,7 @@ ulfsdirhash_build(struct inode *ip)
slot = WRAPINCR(slot, dh->dh_hlen);
dh->dh_hused++;
DH_ENTRY(dh, slot) = pos;
- ulfsdirhash_adjfree(dh, pos, -DIRSIZ(0, ep, needswap),
+ ulfsdirhash_adjfree(dh, pos, -LFS_DIRSIZ(0, ep, needswap),
dirblksiz);
}
pos += ep->d_reclen;
@@ -449,7 +449,7 @@ restart:
/* Check for sequential access, and update offset. */
if (dh->dh_seqopt == 0 && dh->dh_seqoff == offset)
dh->dh_seqopt = 1;
- dh->dh_seqoff = offset + DIRSIZ(0, dp, needswap);
+ dh->dh_seqoff = offset + LFS_DIRSIZ(0, dp, needswap);
DIRHASH_UNLOCK(dh);
*bpp = bp;
@@ -541,7 +541,7 @@ ulfsdirhash_findfree(struct inode *ip, i
brelse(bp, 0);
return (-1);
}
- if (dp->d_ino == 0 || dp->d_reclen > DIRSIZ(0, dp, needswap))
+ if (dp->d_ino == 0 || dp->d_reclen > LFS_DIRSIZ(0, dp, needswap))
break;
i += dp->d_reclen;
dp = (struct lfs_direct *)((char *)dp + dp->d_reclen);
@@ -558,7 +558,7 @@ ulfsdirhash_findfree(struct inode *ip, i
while (i < dirblksiz && freebytes < slotneeded) {
freebytes += dp->d_reclen;
if (dp->d_ino != 0)
- freebytes -= DIRSIZ(0, dp, needswap);
+ freebytes -= LFS_DIRSIZ(0, dp, needswap);
if (dp->d_reclen == 0) {
DIRHASH_UNLOCK(dh);
brelse(bp, 0);
@@ -656,7 +656,7 @@ ulfsdirhash_add(struct inode *ip, struct
DH_ENTRY(dh, slot) = offset;
/* Update the per-block summary info. */
- ulfsdirhash_adjfree(dh, offset, -DIRSIZ(0, dirp, needswap), dirblksiz);
+ ulfsdirhash_adjfree(dh, offset, -LFS_DIRSIZ(0, dirp, needswap), dirblksiz);
DIRHASH_UNLOCK(dh);
}
@@ -691,7 +691,7 @@ ulfsdirhash_remove(struct inode *ip, str
ulfsdirhash_delslot(dh, slot);
/* Update the per-block summary info. */
- ulfsdirhash_adjfree(dh, offset, DIRSIZ(0, dirp, needswap), dirblksiz);
+ ulfsdirhash_adjfree(dh, offset, LFS_DIRSIZ(0, dirp, needswap), dirblksiz);
DIRHASH_UNLOCK(dh);
}
@@ -869,7 +869,7 @@ ulfsdirhash_checkblock(struct inode *ip,
/* Check that the entry exists (will panic if it doesn't). */
ulfsdirhash_findslot(dh, dp->d_name, dp->d_namlen, offset + i);
- nfree += dp->d_reclen - DIRSIZ(0, dp, needswap);
+ nfree += dp->d_reclen - LFS_DIRSIZ(0, dp, needswap);
}
if (i != dirblksiz)
panic("ulfsdirhash_checkblock: bad dir end");
Index: src/sys/ufs/lfs/ulfs_dirhash.h
diff -u src/sys/ufs/lfs/ulfs_dirhash.h:1.4 src/sys/ufs/lfs/ulfs_dirhash.h:1.5
--- src/sys/ufs/lfs/ulfs_dirhash.h:1.4 Sat Jun 8 02:13:33 2013
+++ src/sys/ufs/lfs/ulfs_dirhash.h Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_dirhash.h,v 1.4 2013/06/08 02:13:33 dholland Exp $ */
+/* $NetBSD: ulfs_dirhash.h,v 1.5 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: dirhash.h,v 1.6 2008/06/04 11:33:19 ad Exp */
/*
@@ -48,7 +48,7 @@
#define DIRHASH_DEL (-2) /* deleted entry; may be part of chain */
#define DIRALIGN 4
-#define DH_NFSTATS (DIRECTSIZ(LFS_MAXNAMLEN + 1) / DIRALIGN)
+#define DH_NFSTATS (LFS_DIRECTSIZ(LFS_MAXNAMLEN + 1) / DIRALIGN)
/* max DIRALIGN words in a directory entry */
/*
Index: src/sys/ufs/lfs/ulfs_extattr.c
diff -u src/sys/ufs/lfs/ulfs_extattr.c:1.4 src/sys/ufs/lfs/ulfs_extattr.c:1.5
--- src/sys/ufs/lfs/ulfs_extattr.c:1.4 Thu Jun 6 00:48:04 2013
+++ src/sys/ufs/lfs/ulfs_extattr.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_extattr.c,v 1.4 2013/06/06 00:48:04 dholland Exp $ */
+/* $NetBSD: ulfs_extattr.c,v 1.5 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: ufs_extattr.c,v 1.41 2012/12/08 13:42:36 manu Exp */
/*-
@@ -49,7 +49,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_extattr.c,v 1.4 2013/06/06 00:48:04 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_extattr.c,v 1.5 2013/06/08 02:14:46 dholland Exp $");
#ifdef _KERNEL_OPT
#include "opt_lfs.h"
@@ -546,7 +546,7 @@ ulfs_extattr_iterate_directory(struct ul
if (dvp->v_type != VDIR)
return (ENOTDIR);
- dirbuf = kmem_alloc(DIRBLKSIZ, KM_SLEEP);
+ dirbuf = kmem_alloc(LFS_DIRBLKSIZ, KM_SLEEP);
auio.uio_iov = &aiov;
auio.uio_iovcnt = 1;
@@ -563,9 +563,9 @@ ulfs_extattr_iterate_directory(struct ul
vargs.a_cookies = NULL;
while (!eofflag) {
- auio.uio_resid = DIRBLKSIZ;
+ auio.uio_resid = LFS_DIRBLKSIZ;
aiov.iov_base = dirbuf;
- aiov.iov_len = DIRBLKSIZ;
+ aiov.iov_len = LFS_DIRBLKSIZ;
error = ulfs_readdir(&vargs);
if (error) {
printf("ulfs_extattr_iterate_directory: ulfs_readdir "
@@ -574,12 +574,12 @@ ulfs_extattr_iterate_directory(struct ul
}
/*
- * XXXRW: While in ULFS, we always get DIRBLKSIZ returns from
+ * XXXRW: While in LFS, we always get LFS_DIRBLKSIZ returns from
* the directory code on success, on other file systems this
* may not be the case. For portability, we should check the
* read length on return from ulfs_readdir().
*/
- edp = (struct dirent *)&dirbuf[DIRBLKSIZ];
+ edp = (struct dirent *)&dirbuf[LFS_DIRBLKSIZ];
for (dp = (struct dirent *)dirbuf; dp < edp; ) {
if (dp->d_reclen == 0)
break;
@@ -618,7 +618,7 @@ ulfs_extattr_iterate_directory(struct ul
break;
}
}
- kmem_free(dirbuf, DIRBLKSIZ);
+ kmem_free(dirbuf, LFS_DIRBLKSIZ);
return (0);
}
Index: src/sys/ufs/lfs/ulfs_lookup.c
diff -u src/sys/ufs/lfs/ulfs_lookup.c:1.8 src/sys/ufs/lfs/ulfs_lookup.c:1.9
--- src/sys/ufs/lfs/ulfs_lookup.c:1.8 Sat Jun 8 02:13:33 2013
+++ src/sys/ufs/lfs/ulfs_lookup.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_lookup.c,v 1.8 2013/06/08 02:13:33 dholland Exp $ */
+/* $NetBSD: ulfs_lookup.c,v 1.9 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: ufs_lookup.c,v 1.122 2013/01/22 09:39:18 dholland Exp */
/*
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.8 2013/06/08 02:13:33 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.9 2013/06/08 02:14:46 dholland Exp $");
#ifdef _KERNEL_OPT
#include "opt_lfs.h"
@@ -221,7 +221,7 @@ ulfs_lookup(void *v)
slotfreespace = slotsize = slotneeded = 0;
if ((nameiop == CREATE || nameiop == RENAME) && (flags & ISLASTCN)) {
slotstatus = NONE;
- slotneeded = DIRECTSIZ(cnp->cn_namelen);
+ slotneeded = LFS_DIRECTSIZ(cnp->cn_namelen);
}
/*
@@ -349,7 +349,7 @@ searchloop:
int size = ulfs_rw16(ep->d_reclen, needswap);
if (ep->d_ino != 0)
- size -= DIRSIZ(FSFMT(vdp), ep, needswap);
+ size -= LFS_DIRSIZ(FSFMT(vdp), ep, needswap);
if (size > 0) {
if (size >= slotneeded) {
slotstatus = FOUND;
@@ -529,10 +529,10 @@ found:
* Check that directory length properly reflects presence
* of this entry.
*/
- if (results->ulr_offset + DIRSIZ(FSFMT(vdp), ep, needswap) > dp->i_size) {
+ if (results->ulr_offset + LFS_DIRSIZ(FSFMT(vdp), ep, needswap) > dp->i_size) {
ulfs_dirbad(dp, results->ulr_offset, "i_size too small");
dp->i_size =
- results->ulr_offset + DIRSIZ(FSFMT(vdp), ep, needswap);
+ results->ulr_offset + LFS_DIRSIZ(FSFMT(vdp), ep, needswap);
DIP_ASSIGN(dp, size, dp->i_size);
dp->i_flag |= IN_CHANGE | IN_UPDATE;
ULFS_WAPBL_UPDATE(vdp, NULL, NULL, UPDATE_DIROP);
@@ -734,13 +734,13 @@ ulfs_dirbadentry(struct vnode *dp, struc
ulfs_rw16(ep->d_reclen, needswap) >
dirblksiz - (entryoffsetinblock & (dirblksiz - 1)) ||
ulfs_rw16(ep->d_reclen, needswap) <
- DIRSIZ(FSFMT(dp), ep, needswap) ||
+ LFS_DIRSIZ(FSFMT(dp), ep, needswap) ||
namlen > LFS_MAXNAMLEN) {
/*return (1); */
printf("First bad, reclen=%#x, DIRSIZ=%lu, namlen=%d, "
"flags=%#x, entryoffsetinblock=%d, dirblksiz = %d\n",
ulfs_rw16(ep->d_reclen, needswap),
- (u_long)DIRSIZ(FSFMT(dp), ep, needswap),
+ (u_long)LFS_DIRSIZ(FSFMT(dp), ep, needswap),
namlen, dp->v_mount->mnt_flag, entryoffsetinblock,
dirblksiz);
goto bad;
@@ -776,7 +776,7 @@ ulfs_makedirentry(struct inode *ip, stru
if (FSFMT(ITOV(ip)))
newdirp->d_type = 0;
else
- newdirp->d_type = IFTODT(ip->i_mode);
+ newdirp->d_type = LFS_IFTODT(ip->i_mode);
}
/*
@@ -834,7 +834,7 @@ ulfs_direnter(struct vnode *dvp, const s
l = curlwp;
dp = VTOI(dvp);
- newentrysize = DIRSIZ(0, dirp, 0);
+ newentrysize = LFS_DIRSIZ(0, dirp, 0);
if (ulr->ulr_count == 0) {
/*
@@ -924,7 +924,7 @@ ulfs_direnter(struct vnode *dvp, const s
* ulr_offset + ulr_count would yield the space.
*/
ep = (struct lfs_direct *)dirbuf;
- dsize = (ep->d_ino != 0) ? DIRSIZ(FSFMT(dvp), ep, needswap) : 0;
+ dsize = (ep->d_ino != 0) ? LFS_DIRSIZ(FSFMT(dvp), ep, needswap) : 0;
spacefree = ulfs_rw16(ep->d_reclen, needswap) - dsize;
for (loc = ulfs_rw16(ep->d_reclen, needswap); loc < ulr->ulr_count; ) {
uint16_t reclen;
@@ -951,7 +951,7 @@ ulfs_direnter(struct vnode *dvp, const s
dsize = 0;
continue;
}
- dsize = DIRSIZ(FSFMT(dvp), nep, needswap);
+ dsize = LFS_DIRSIZ(FSFMT(dvp), nep, needswap);
spacefree += reclen - dsize;
#ifdef LFS_DIRHASH
if (dp->i_dirhash != NULL)
Index: src/sys/ufs/lfs/ulfs_vnops.c
diff -u src/sys/ufs/lfs/ulfs_vnops.c:1.8 src/sys/ufs/lfs/ulfs_vnops.c:1.9
--- src/sys/ufs/lfs/ulfs_vnops.c:1.8 Sat Jun 8 02:12:56 2013
+++ src/sys/ufs/lfs/ulfs_vnops.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_vnops.c,v 1.8 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: ulfs_vnops.c,v 1.9 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: ufs_vnops.c,v 1.212 2013/03/18 19:35:48 plunky Exp */
/*-
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.8 2013/06/08 02:12:56 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.9 2013/06/08 02:14:46 dholland Exp $");
#if defined(_KERNEL_OPT)
#include "opt_lfs.h"
@@ -119,8 +119,8 @@ static int ulfs_chown(struct vnode *, ui
* A virgin directory (no blushing please).
*/
static const struct lfs_dirtemplate mastertemplate = {
- 0, 12, LFS_DT_DIR, 1, ".",
- 0, DIRBLKSIZ - 12, LFS_DT_DIR, 2, ".."
+ 0, 12, LFS_DT_DIR, 1, ".",
+ 0, LFS_DIRBLKSIZ - 12, LFS_DT_DIR, 2, ".."
};
/*
Index: src/sys/ufs/lfs/ulfs_rename.c
diff -u src/sys/ufs/lfs/ulfs_rename.c:1.5 src/sys/ufs/lfs/ulfs_rename.c:1.6
--- src/sys/ufs/lfs/ulfs_rename.c:1.5 Sat Jun 8 02:12:56 2013
+++ src/sys/ufs/lfs/ulfs_rename.c Sat Jun 8 02:14:46 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_rename.c,v 1.5 2013/06/08 02:12:56 dholland Exp $ */
+/* $NetBSD: ulfs_rename.c,v 1.6 2013/06/08 02:14:46 dholland Exp $ */
/* from NetBSD: ufs_rename.c,v 1.6 2013/01/22 09:39:18 dholland Exp */
/*-
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_rename.c,v 1.5 2013/06/08 02:12:56 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_rename.c,v 1.6 2013/06/08 02:14:46 dholland Exp $");
#include <sys/param.h>
#include <sys/buf.h>
@@ -272,8 +272,8 @@ ulfs_gro_remove_check_permitted(struct m
* XXX Copypasta from ulfs_vnops.c. Kill!
*/
static const struct lfs_dirtemplate mastertemplate = {
- 0, 12, LFS_DT_DIR, 1, ".",
- 0, DIRBLKSIZ - 12, LFS_DT_DIR, 2, ".."
+ 0, 12, LFS_DT_DIR, 1, ".",
+ 0, LFS_DIRBLKSIZ - 12, LFS_DT_DIR, 2, ".."
};
/*
@@ -429,7 +429,7 @@ ulfs_gro_rename(struct mount *mp, kauth_
* figure.
*/
error = ulfs_dirrewrite(VTOI(tdvp), tulr->ulr_offset,
- VTOI(tvp), VTOI(fvp)->i_number, IFTODT(VTOI(fvp)->i_mode),
+ VTOI(tvp), VTOI(fvp)->i_number, LFS_IFTODT(VTOI(fvp)->i_mode),
((directory_p && reparent_p) ? reparent_p : directory_p),
IN_CHANGE | IN_UPDATE);
if (error)