Module Name: src Committed By: dholland Date: Tue Sep 15 15:02:26 UTC 2015
Modified Files: src/sbin/fsck_lfs: dir.c extern.h fsck.h inode.c pass2.c src/sbin/newfs_lfs: make_lfs.c src/sys/ufs/lfs: lfs_accessors.h lfs_rename.c ulfs_dirhash.c ulfs_dirhash.h ulfs_extern.h ulfs_lookup.c ulfs_vnops.c Log Message: Pass around struct lfs_dirheader instead of struct lfs_direct. To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sbin/fsck_lfs/dir.c cvs rdiff -u -r1.12 -r1.13 src/sbin/fsck_lfs/extern.h cvs rdiff -u -r1.21 -r1.22 src/sbin/fsck_lfs/fsck.h cvs rdiff -u -r1.66 -r1.67 src/sbin/fsck_lfs/inode.c cvs rdiff -u -r1.31 -r1.32 src/sbin/fsck_lfs/pass2.c cvs rdiff -u -r1.53 -r1.54 src/sbin/newfs_lfs/make_lfs.c cvs rdiff -u -r1.26 -r1.27 src/sys/ufs/lfs/lfs_accessors.h cvs rdiff -u -r1.12 -r1.13 src/sys/ufs/lfs/lfs_rename.c cvs rdiff -u -r1.11 -r1.12 src/sys/ufs/lfs/ulfs_dirhash.c cvs rdiff -u -r1.5 -r1.6 src/sys/ufs/lfs/ulfs_dirhash.h cvs rdiff -u -r1.18 -r1.19 src/sys/ufs/lfs/ulfs_extern.h cvs rdiff -u -r1.31 -r1.32 src/sys/ufs/lfs/ulfs_lookup.c \ src/sys/ufs/lfs/ulfs_vnops.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.42 src/sbin/fsck_lfs/dir.c:1.43 --- src/sbin/fsck_lfs/dir.c:1.42 Tue Sep 15 15:02:01 2015 +++ src/sbin/fsck_lfs/dir.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: dir.c,v 1.42 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: dir.c,v 1.43 2015/09/15 15:02:25 dholland Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -85,7 +85,7 @@ struct lfs_odirtemplate odirhead = { static int expanddir(struct uvnode *, union lfs_dinode *, char *); static void freedir(ino_t, ino_t); -static struct lfs_direct *fsck_readdir(struct uvnode *, struct inodesc *); +static struct lfs_dirheader *fsck_readdir(struct uvnode *, struct inodesc *); static int lftempname(char *, ino_t); static int mkentry(struct inodesc *); static int chgino(struct inodesc *); @@ -132,7 +132,7 @@ propagate(void) int dirscan(struct inodesc *idesc) { - struct lfs_direct *dp; + struct lfs_dirheader *dp; struct ubuf *bp; int dsize, n; long blksiz; @@ -156,7 +156,7 @@ dirscan(struct inodesc *idesc) dp = fsck_readdir(vp, idesc)) { dsize = lfs_dir_getreclen(fs, dp); memcpy(dbuf, dp, (size_t) dsize); - idesc->id_dirp = (struct lfs_direct *) dbuf; + idesc->id_dirp = (struct lfs_dirheader *) dbuf; if ((n = (*idesc->id_func) (idesc)) & ALTERED) { bread(vp, idesc->id_lblkno, blksiz, 0, &bp); memcpy(bp->b_data + idesc->id_loc - dsize, dbuf, @@ -173,10 +173,10 @@ dirscan(struct inodesc *idesc) /* * get next entry in a directory. */ -static struct lfs_direct * +static struct lfs_dirheader * fsck_readdir(struct uvnode *vp, struct inodesc *idesc) { - struct lfs_direct *dp, *ndp; + struct lfs_dirheader *dp, *ndp; struct ubuf *bp; long size, blksiz, fix, dploc; @@ -184,7 +184,7 @@ fsck_readdir(struct uvnode *vp, struct i bread(vp, idesc->id_lblkno, blksiz, 0, &bp); 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); + dp = (struct lfs_dirheader *) (bp->b_data + idesc->id_loc); if (dircheck(idesc, dp)) goto dpok; brelse(bp, 0); @@ -192,7 +192,7 @@ fsck_readdir(struct uvnode *vp, struct i return (0); fix = dofix(idesc, "DIRECTORY CORRUPTED"); bread(vp, idesc->id_lblkno, blksiz, 0, &bp); - dp = (struct lfs_direct *) (bp->b_data + idesc->id_loc); + dp = (struct lfs_dirheader *) (bp->b_data + idesc->id_loc); lfs_dir_setino(fs, dp, 0); lfs_dir_settype(fs, dp, LFS_DT_UNKNOWN); lfs_dir_setnamlen(fs, dp, 0); @@ -214,14 +214,14 @@ dpok: return NULL; } dploc = idesc->id_loc; - dp = (struct lfs_direct *) (bp->b_data + dploc); + dp = (struct lfs_dirheader *) (bp->b_data + dploc); idesc->id_loc += lfs_dir_getreclen(fs, dp); idesc->id_filesize -= lfs_dir_getreclen(fs, dp); if ((idesc->id_loc % LFS_DIRBLKSIZ) == 0) { brelse(bp, 0); return dp; } - ndp = (struct lfs_direct *) (bp->b_data + idesc->id_loc); + ndp = (struct lfs_dirheader *) (bp->b_data + idesc->id_loc); if (idesc->id_loc < blksiz && idesc->id_filesize > 0 && dircheck(idesc, ndp) == 0) { brelse(bp, 0); @@ -232,7 +232,7 @@ dpok: return 0; fix = dofix(idesc, "DIRECTORY CORRUPTED"); bread(vp, idesc->id_lblkno, blksiz, 0, &bp); - dp = (struct lfs_direct *) (bp->b_data + dploc); + dp = (struct lfs_dirheader *) (bp->b_data + dploc); lfs_dir_setreclen(fs, dp, lfs_dir_getreclen(fs, dp) + size); if (fix) VOP_BWRITE(bp); @@ -249,7 +249,7 @@ dpok: * This is a superset of the checks made in the kernel. */ int -dircheck(struct inodesc *idesc, struct lfs_direct *dp) +dircheck(struct inodesc *idesc, struct lfs_dirheader *dp) { int size; const char *cp; @@ -370,7 +370,7 @@ adjust(struct inodesc *idesc, short lcnt static int mkentry(struct inodesc *idesc) { - struct lfs_direct *dirp = idesc->id_dirp; + struct lfs_dirheader *dirp = idesc->id_dirp; unsigned namlen; unsigned newreclen, oldreclen; @@ -409,7 +409,7 @@ mkentry(struct inodesc *idesc) static int chgino(struct inodesc *idesc) { - struct lfs_direct *dirp = idesc->id_dirp; + struct lfs_dirheader *dirp = idesc->id_dirp; int namlen; namlen = lfs_dir_getnamlen(fs, dirp); Index: src/sbin/fsck_lfs/extern.h diff -u src/sbin/fsck_lfs/extern.h:1.12 src/sbin/fsck_lfs/extern.h:1.13 --- src/sbin/fsck_lfs/extern.h:1.12 Wed Aug 12 18:28:00 2015 +++ src/sbin/fsck_lfs/extern.h Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: extern.h,v 1.12 2015/08/12 18:28:00 dholland Exp $ */ +/* $NetBSD: extern.h,v 1.13 2015/09/15 15:02:25 dholland Exp $ */ /* * Copyright (c) 1994 James A. Jegers @@ -36,7 +36,7 @@ int chkrange(daddr_t, int); void ckfini(int); int ckinode(union lfs_dinode *, struct inodesc *); void clri(struct inodesc *, const char *, int); -int dircheck(struct inodesc *, struct lfs_direct *); +int dircheck(struct inodesc *, struct lfs_dirheader *); void direrror(ino_t, const char *); int dirscan(struct inodesc *); int dofix(struct inodesc *, const char *); Index: src/sbin/fsck_lfs/fsck.h diff -u src/sbin/fsck_lfs/fsck.h:1.21 src/sbin/fsck_lfs/fsck.h:1.22 --- src/sbin/fsck_lfs/fsck.h:1.21 Wed Aug 12 18:28:00 2015 +++ src/sbin/fsck_lfs/fsck.h Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: fsck.h,v 1.21 2015/08/12 18:28:00 dholland Exp $ */ +/* $NetBSD: fsck.h,v 1.22 2015/09/15 15:02:25 dholland Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -132,7 +132,7 @@ struct inodesc { off_t id_filesize; /* for DATA nodes, the size of the directory */ int id_loc; /* for DATA nodes, current location in dir */ int id_entryno; /* for DATA nodes, current entry number */ - struct lfs_direct *id_dirp; /* for DATA nodes, ptr to current entry */ + struct lfs_dirheader *id_dirp; /* for DATA nodes, ptr to current entry */ const char *id_name; /* for DATA nodes, name to find or enter */ char id_type; /* type of descriptor, DATA or ADDR */ }; Index: src/sbin/fsck_lfs/inode.c diff -u src/sbin/fsck_lfs/inode.c:1.66 src/sbin/fsck_lfs/inode.c:1.67 --- src/sbin/fsck_lfs/inode.c:1.66 Tue Sep 15 15:02:01 2015 +++ src/sbin/fsck_lfs/inode.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: inode.c,v 1.66 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: inode.c,v 1.67 2015/09/15 15:02:25 dholland Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -501,7 +501,7 @@ clearinode(ino_t inumber) int findname(struct inodesc * idesc) { - struct lfs_direct *dirp = idesc->id_dirp; + struct lfs_dirheader *dirp = idesc->id_dirp; size_t len; char *buf; @@ -522,7 +522,7 @@ findname(struct inodesc * idesc) int findino(struct inodesc * idesc) { - struct lfs_direct *dirp = idesc->id_dirp; + struct lfs_dirheader *dirp = idesc->id_dirp; ino_t ino; ino = lfs_dir_getino(fs, dirp); Index: src/sbin/fsck_lfs/pass2.c diff -u src/sbin/fsck_lfs/pass2.c:1.31 src/sbin/fsck_lfs/pass2.c:1.32 --- src/sbin/fsck_lfs/pass2.c:1.31 Tue Sep 15 15:02:01 2015 +++ src/sbin/fsck_lfs/pass2.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: pass2.c,v 1.31 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: pass2.c,v 1.32 2015/09/15 15:02:25 dholland Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -212,12 +212,12 @@ pass2(void) static int pass2check(struct inodesc * idesc) { - struct lfs_direct *dirp = idesc->id_dirp; + struct lfs_dirheader *dirp = idesc->id_dirp; struct inoinfo *inp; int n, entrysize, ret = 0; union lfs_dinode *dp; const char *errmsg; - struct lfs_direct proto; + struct lfs_dirheader proto; char namebuf[MAXPATHLEN + 1]; char pathbuf[MAXPATHLEN + 1]; @@ -293,7 +293,7 @@ chk1: lfs_dir_setreclen(fs, dirp, n); idesc->id_entryno++; lncntp[lfs_dir_getino(fs, dirp)]--; - dirp = (struct lfs_direct *) ((char *) (dirp) + n); + dirp = (struct lfs_dirheader *) ((char *) (dirp) + n); memset(dirp, 0, lfs_dir_getreclen(fs, &proto)); lfs_dir_setreclen(fs, dirp, lfs_dir_getreclen(fs, &proto)); } Index: src/sbin/newfs_lfs/make_lfs.c diff -u src/sbin/newfs_lfs/make_lfs.c:1.53 src/sbin/newfs_lfs/make_lfs.c:1.54 --- src/sbin/newfs_lfs/make_lfs.c:1.53 Tue Sep 15 15:02:01 2015 +++ src/sbin/newfs_lfs/make_lfs.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: make_lfs.c,v 1.53 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: make_lfs.c,v 1.54 2015/09/15 15:02:25 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.53 2015/09/15 15:02:01 dholland Exp $"); +__RCSID("$NetBSD: make_lfs.c,v 1.54 2015/09/15 15:02:25 dholland Exp $"); #endif #endif /* not lint */ @@ -357,7 +357,7 @@ static void make_dir(struct lfs *fs, void *bufp, const struct dirproto *protodir, unsigned numentries) { - struct lfs_direct *ep; + struct lfs_dirheader *ep; unsigned spaceleft; unsigned namlen, reclen; unsigned i; Index: src/sys/ufs/lfs/lfs_accessors.h diff -u src/sys/ufs/lfs/lfs_accessors.h:1.26 src/sys/ufs/lfs/lfs_accessors.h:1.27 --- src/sys/ufs/lfs/lfs_accessors.h:1.26 Tue Sep 15 15:02:01 2015 +++ src/sys/ufs/lfs/lfs_accessors.h Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_accessors.h,v 1.26 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: lfs_accessors.h,v 1.27 2015/09/15 15:02:25 dholland Exp $ */ /* from NetBSD: lfs.h,v 1.165 2015/07/24 06:59:32 dholland Exp */ /* from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp */ @@ -223,7 +223,7 @@ * 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)) + (sizeof(struct lfs_dirheader) + (((namlen)+1 + 3) &~ 3)) #if (BYTE_ORDER == LITTLE_ENDIAN) #define LFS_OLDDIRSIZ(oldfmt, dp, needswap) \ @@ -242,75 +242,75 @@ #define LFS_NEWDIRFMT 0 #define LFS_NEXTDIR(fs, dp) \ - ((struct lfs_direct *)((char *)(dp) + lfs_dir_getreclen(fs, dp))) + ((struct lfs_dirheader *)((char *)(dp) + lfs_dir_getreclen(fs, dp))) static __unused inline char * -lfs_dir_nameptr(const STRUCT_LFS *fs, struct lfs_direct *dp) +lfs_dir_nameptr(const STRUCT_LFS *fs, struct lfs_dirheader *dh) { - return (char *)(&dp->d_header + 1); + return (char *)(dh + 1); } static __unused inline uint32_t -lfs_dir_getino(const STRUCT_LFS *fs, const struct lfs_direct *dp) +lfs_dir_getino(const STRUCT_LFS *fs, const struct lfs_dirheader *dh) { - return LFS_SWAP_uint32_t(fs, dp->d_header.dh_ino); + return LFS_SWAP_uint32_t(fs, dh->dh_ino); } static __unused inline uint16_t -lfs_dir_getreclen(const STRUCT_LFS *fs, const struct lfs_direct *dp) +lfs_dir_getreclen(const STRUCT_LFS *fs, const struct lfs_dirheader *dh) { - return LFS_SWAP_uint16_t(fs, dp->d_header.dh_reclen); + return LFS_SWAP_uint16_t(fs, dh->dh_reclen); } static __unused inline uint8_t -lfs_dir_gettype(const STRUCT_LFS *fs, const struct lfs_direct *dp) +lfs_dir_gettype(const STRUCT_LFS *fs, const struct lfs_dirheader *dh) { if (fs->lfs_hasolddirfmt) { return LFS_DT_UNKNOWN; } - return dp->d_header.dh_type; + return dh->dh_type; } static __unused inline uint8_t -lfs_dir_getnamlen(const STRUCT_LFS *fs, const struct lfs_direct *dp) +lfs_dir_getnamlen(const STRUCT_LFS *fs, const struct lfs_dirheader *dh) { if (fs->lfs_hasolddirfmt && LFS_LITTLE_ENDIAN_ONDISK(fs)) { /* low-order byte of old 16-bit namlen field */ - return dp->d_header.dh_type; + return dh->dh_type; } - return dp->d_header.dh_namlen; + return dh->dh_namlen; } static __unused inline void -lfs_dir_setino(STRUCT_LFS *fs, struct lfs_direct *dp, uint32_t ino) +lfs_dir_setino(STRUCT_LFS *fs, struct lfs_dirheader *dh, uint32_t ino) { - dp->d_header.dh_ino = LFS_SWAP_uint32_t(fs, ino); + dh->dh_ino = LFS_SWAP_uint32_t(fs, ino); } static __unused inline void -lfs_dir_setreclen(STRUCT_LFS *fs, struct lfs_direct *dp, uint16_t reclen) +lfs_dir_setreclen(STRUCT_LFS *fs, struct lfs_dirheader *dh, uint16_t reclen) { - dp->d_header.dh_reclen = LFS_SWAP_uint16_t(fs, reclen); + dh->dh_reclen = LFS_SWAP_uint16_t(fs, reclen); } static __unused inline void -lfs_dir_settype(const STRUCT_LFS *fs, struct lfs_direct *dp, uint8_t type) +lfs_dir_settype(const STRUCT_LFS *fs, struct lfs_dirheader *dh, uint8_t type) { if (fs->lfs_hasolddirfmt) { /* do nothing */ return; } - dp->d_header.dh_type = type; + dh->dh_type = type; } static __unused inline void -lfs_dir_setnamlen(const STRUCT_LFS *fs, struct lfs_direct *dp, uint8_t namlen) +lfs_dir_setnamlen(const STRUCT_LFS *fs, struct lfs_dirheader *dh, uint8_t namlen) { if (fs->lfs_hasolddirfmt && LFS_LITTLE_ENDIAN_ONDISK(fs)) { /* low-order byte of old 16-bit namlen field */ - dp->d_header.dh_type = namlen; + dh->dh_type = namlen; } - dp->d_header.dh_namlen = namlen; + dh->dh_namlen = namlen; } static __unused inline void Index: src/sys/ufs/lfs/lfs_rename.c diff -u src/sys/ufs/lfs/lfs_rename.c:1.12 src/sys/ufs/lfs/lfs_rename.c:1.13 --- src/sys/ufs/lfs/lfs_rename.c:1.12 Tue Sep 15 15:02:01 2015 +++ src/sys/ufs/lfs/lfs_rename.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_rename.c,v 1.12 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: lfs_rename.c,v 1.13 2015/09/15 15:02:25 dholland Exp $ */ /* from NetBSD: ufs_rename.c,v 1.6 2013/01/22 09:39:18 dholland Exp */ /*- @@ -89,7 +89,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lfs_rename.c,v 1.12 2015/09/15 15:02:01 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lfs_rename.c,v 1.13 2015/09/15 15:02:25 dholland Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -328,7 +328,7 @@ ulfs_rename_ulr_overlap_p(const struct u * the directory vp. */ static int /* XXX int? uint8_t? */ -ulfs_direct_namlen(const struct lfs_direct *ep, const struct vnode *vp) +ulfs_direct_namlen(const struct lfs_dirheader *ep, const struct vnode *vp) { struct lfs *fs; @@ -361,7 +361,7 @@ ulfs_rename_recalculate_fulr(struct vnod doff_t offset; /* Offset of entry we're examining. */ struct buf *bp; /* I/O block we're examining. */ char *dirbuf; /* Pointer into directory at search_start. */ - struct lfs_direct *ep; /* Pointer to the entry we're examining. */ + struct lfs_dirheader *ep; /* Pointer to the entry we're examining. */ /* XXX direct::d_reclen is 16-bit; * ulfs_lookup_results::ulr_reclen is 32-bit. Blah. */ uint32_t reclen; /* Length of the entry we're examining. */ @@ -430,7 +430,7 @@ ulfs_rename_recalculate_fulr(struct vnod /* * Examine the directory entry at offset. */ - ep = (struct lfs_direct *)(dirbuf + (offset - search_start)); + ep = (struct lfs_dirheader *)(dirbuf + (offset - search_start)); reclen = lfs_dir_getreclen(fs, ep); if (lfs_dir_getino(fs, ep) == 0) Index: src/sys/ufs/lfs/ulfs_dirhash.c diff -u src/sys/ufs/lfs/ulfs_dirhash.c:1.11 src/sys/ufs/lfs/ulfs_dirhash.c:1.12 --- src/sys/ufs/lfs/ulfs_dirhash.c:1.11 Tue Sep 15 15:02:01 2015 +++ src/sys/ufs/lfs/ulfs_dirhash.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_dirhash.c,v 1.11 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: ulfs_dirhash.c,v 1.12 2015/09/15 15:02:25 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.11 2015/09/15 15:02:01 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_dirhash.c,v 1.12 2015/09/15 15:02:25 dholland Exp $"); /* * This implements a hash-based lookup scheme for ULFS directories. @@ -73,7 +73,7 @@ static void ulfsdirhash_adjfree(struct d static void ulfsdirhash_delslot(struct dirhash *dh, int slot); static int ulfsdirhash_findslot(struct dirhash *dh, const char *name, int namelen, doff_t offset); -static doff_t ulfsdirhash_getprev(struct lfs *fs, struct lfs_direct *dp, +static doff_t ulfsdirhash_getprev(struct lfs *fs, struct lfs_dirheader *dp, doff_t offset, int dirblksiz); static int ulfsdirhash_recycle(int wanted); @@ -117,7 +117,7 @@ ulfsdirhash_build(struct inode *ip) struct lfs *fs = ip->i_lfs; struct dirhash *dh; struct buf *bp = NULL; - struct lfs_direct *ep; + struct lfs_dirheader *ep; struct vnode *vp; doff_t bmask, pos; int dirblocks, i, j, memreqd, nblocks, narrays, nslots, slot; @@ -227,7 +227,7 @@ ulfsdirhash_build(struct inode *ip) } /* Add this entry to the hash. */ - ep = (struct lfs_direct *)((char *)bp->b_data + (pos & bmask)); + ep = (struct lfs_dirheader *)((char *)bp->b_data + (pos & bmask)); if (lfs_dir_getreclen(fs, ep) == 0 || lfs_dir_getreclen(fs, ep) > dirblksiz - (pos & (dirblksiz - 1))) { /* Corrupted directory. */ @@ -328,7 +328,7 @@ ulfsdirhash_lookup(struct inode *ip, con { struct lfs *fs = ip->i_lfs; struct dirhash *dh, *dh_next; - struct lfs_direct *dp; + struct lfs_dirheader *dp; struct vnode *vp; struct buf *bp; doff_t blkoff, bmask, offset, prevoff; @@ -424,7 +424,7 @@ restart: return (EJUSTRETURN); } } - dp = (struct lfs_direct *)((char *)bp->b_data + (offset & bmask)); + dp = (struct lfs_dirheader *)((char *)bp->b_data + (offset & bmask)); if (lfs_dir_getreclen(fs, dp) == 0 || lfs_dir_getreclen(fs, dp) > dirblksiz - (offset & (dirblksiz - 1))) { /* Corrupted directory. */ @@ -501,7 +501,7 @@ doff_t ulfsdirhash_findfree(struct inode *ip, int slotneeded, int *slotsize) { struct lfs *fs = ip->i_lfs; - struct lfs_direct *dp; + struct lfs_dirheader *dp; struct dirhash *dh; struct buf *bp; doff_t pos, slotstart; @@ -621,7 +621,7 @@ ulfsdirhash_enduseful(struct inode *ip) * the offset of this entry. */ void -ulfsdirhash_add(struct inode *ip, struct lfs_direct *dirp, doff_t offset) +ulfsdirhash_add(struct inode *ip, struct lfs_dirheader *dirp, doff_t offset) { struct lfs *fs = ip->i_lfs; struct dirhash *dh; @@ -669,7 +669,7 @@ ulfsdirhash_add(struct inode *ip, struct * `offset' within the directory. */ void -ulfsdirhash_remove(struct inode *ip, struct lfs_direct *dirp, doff_t offset) +ulfsdirhash_remove(struct inode *ip, struct lfs_dirheader *dirp, doff_t offset) { struct lfs *fs = ip->i_lfs; struct dirhash *dh; @@ -704,7 +704,7 @@ ulfsdirhash_remove(struct inode *ip, str * when compacting directory blocks. */ void -ulfsdirhash_move(struct inode *ip, struct lfs_direct *dirp, doff_t oldoff, +ulfsdirhash_move(struct inode *ip, struct lfs_dirheader *dirp, doff_t oldoff, doff_t newoff) { struct lfs *fs = ip->i_lfs; @@ -831,7 +831,7 @@ ulfsdirhash_checkblock(struct inode *ip, { struct lfs *fs = ip->i_lfs; struct dirhash *dh; - struct lfs_direct *dp; + struct lfs_dirheader *dp; int block, ffslot, i, nfree; int dirblksiz = ip->i_lfs->um_dirblksiz; @@ -853,7 +853,7 @@ ulfsdirhash_checkblock(struct inode *ip, nfree = 0; for (i = 0; i < dirblksiz; i += lfs_dir_getreclen(fs, dp)) { - dp = (struct lfs_direct *)(sbuf + i); + dp = (struct lfs_dirheader *)(sbuf + i); if (lfs_dir_getreclen(fs, dp) == 0 || i + lfs_dir_getreclen(fs, dp) > dirblksiz) panic("ulfsdirhash_checkblock: bad dir"); @@ -1014,10 +1014,10 @@ ulfsdirhash_delslot(struct dirhash *dh, * other problem occurred. */ static doff_t -ulfsdirhash_getprev(struct lfs *fs, struct lfs_direct *dirp, +ulfsdirhash_getprev(struct lfs *fs, struct lfs_dirheader *dirp, doff_t offset, int dirblksiz) { - struct lfs_direct *dp; + struct lfs_dirheader *dp; char *blkbuf; doff_t blkoff, prevoff; int entrypos, i; @@ -1034,7 +1034,7 @@ ulfsdirhash_getprev(struct lfs *fs, stru /* Scan from the start of the block until we get to the entry. */ for (i = 0; i < entrypos; i += reclen) { - dp = (struct lfs_direct *)(blkbuf + i); + dp = (struct lfs_dirheader *)(blkbuf + i); reclen = lfs_dir_getreclen(fs, dp); if (reclen == 0 || i + reclen > entrypos) return (-1); /* Corrupted directory. */ Index: src/sys/ufs/lfs/ulfs_dirhash.h diff -u src/sys/ufs/lfs/ulfs_dirhash.h:1.5 src/sys/ufs/lfs/ulfs_dirhash.h:1.6 --- src/sys/ufs/lfs/ulfs_dirhash.h:1.5 Sat Jun 8 02:14:46 2013 +++ src/sys/ufs/lfs/ulfs_dirhash.h Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_dirhash.h,v 1.5 2013/06/08 02:14:46 dholland Exp $ */ +/* $NetBSD: ulfs_dirhash.h,v 1.6 2015/09/15 15:02:25 dholland Exp $ */ /* from NetBSD: dirhash.h,v 1.6 2008/06/04 11:33:19 ad Exp */ /* @@ -118,9 +118,9 @@ doff_t ulfsdirhash_enduseful(struct inod int ulfsdirhash_lookup(struct inode *, const char *, int, doff_t *, struct buf **, doff_t *); void ulfsdirhash_newblk(struct inode *, doff_t); -void ulfsdirhash_add(struct inode *, struct lfs_direct *, doff_t); -void ulfsdirhash_remove(struct inode *, struct lfs_direct *, doff_t); -void ulfsdirhash_move(struct inode *, struct lfs_direct *, doff_t, doff_t); +void ulfsdirhash_add(struct inode *, struct lfs_dirheader *, doff_t); +void ulfsdirhash_remove(struct inode *, struct lfs_dirheader *, doff_t); +void ulfsdirhash_move(struct inode *, struct lfs_dirheader *, doff_t, doff_t); void ulfsdirhash_dirtrunc(struct inode *, doff_t); void ulfsdirhash_free(struct inode *); void ulfsdirhash_checkblock(struct inode *, char *, doff_t); Index: src/sys/ufs/lfs/ulfs_extern.h diff -u src/sys/ufs/lfs/ulfs_extern.h:1.18 src/sys/ufs/lfs/ulfs_extern.h:1.19 --- src/sys/ufs/lfs/ulfs_extern.h:1.18 Tue Sep 15 15:01:03 2015 +++ src/sys/ufs/lfs/ulfs_extern.h Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_extern.h,v 1.18 2015/09/15 15:01:03 dholland Exp $ */ +/* $NetBSD: ulfs_extern.h,v 1.19 2015/09/15 15:02:25 dholland Exp $ */ /* from NetBSD: ufs_extern.h,v 1.72 2012/05/09 00:21:18 riastradh Exp */ /*- @@ -109,7 +109,7 @@ int ulfs_balloc_range(struct vnode *, of /* ulfs_lookup.c */ void ulfs_dirbad(struct inode *, doff_t, const char *); -int ulfs_dirbadentry(struct vnode *, struct lfs_direct *, int); +int ulfs_dirbadentry(struct vnode *, struct lfs_dirheader *, int); int ulfs_direnter(struct vnode *, const struct ulfs_lookup_results *, struct vnode *, struct componentname *, ino_t, unsigned, Index: src/sys/ufs/lfs/ulfs_lookup.c diff -u src/sys/ufs/lfs/ulfs_lookup.c:1.31 src/sys/ufs/lfs/ulfs_lookup.c:1.32 --- src/sys/ufs/lfs/ulfs_lookup.c:1.31 Tue Sep 15 15:02:01 2015 +++ src/sys/ufs/lfs/ulfs_lookup.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_lookup.c,v 1.31 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: ulfs_lookup.c,v 1.32 2015/09/15 15:02:25 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.31 2015/09/15 15:02:01 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.32 2015/09/15 15:02:25 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_lfs.h" @@ -123,7 +123,7 @@ ulfs_lookup(void *v) struct vnode *vdp = ap->a_dvp; /* vnode for directory being searched */ struct inode *dp = VTOI(vdp); /* inode for directory being searched */ struct buf *bp; /* a buffer of directory entries */ - struct lfs_direct *ep; /* the current directory entry */ + struct lfs_dirheader *ep; /* the current directory entry */ int entryoffsetinblock; /* offset of ep in bp's buffer */ enum { NONE, /* need to search a slot for our new entry */ @@ -263,7 +263,7 @@ ulfs_lookup(void *v) switch (ulfsdirhash_lookup(dp, cnp->cn_nameptr, cnp->cn_namelen, &results->ulr_offset, &bp, nameiop == DELETE ? &prevoff : NULL)) { case 0: - ep = (struct lfs_direct *)((char *)bp->b_data + + ep = (struct lfs_dirheader *)((char *)bp->b_data + (results->ulr_offset & bmask)); goto foundentry; case ENOENT: @@ -327,7 +327,7 @@ searchloop: * "lfs_dirchk" to be true. */ KASSERT(bp != NULL); - ep = (struct lfs_direct *)((char *)bp->b_data + entryoffsetinblock); + ep = (struct lfs_dirheader *)((char *)bp->b_data + entryoffsetinblock); if (lfs_dir_getreclen(fs, ep) == 0 || (lfs_dirchk && ulfs_dirbadentry(vdp, ep, entryoffsetinblock))) { int i; @@ -657,7 +657,7 @@ ulfs_dirbad(struct inode *ip, doff_t off * name must be as long as advertised, and null terminated */ int -ulfs_dirbadentry(struct vnode *dp, struct lfs_direct *ep, int entryoffsetinblock) +ulfs_dirbadentry(struct vnode *dp, struct lfs_dirheader *ep, int entryoffsetinblock) { int i; int namlen; @@ -712,7 +712,7 @@ bad: * Does not set d_reclen. */ static void -ulfs_direntry_assign(struct lfs *fs, struct lfs_direct *dirp, +ulfs_direntry_assign(struct lfs *fs, struct lfs_dirheader *dirp, const char *name, size_t namlen, ino_t inum, unsigned dtype) { @@ -764,7 +764,7 @@ ulfs_direnter(struct vnode *dvp, const s struct inode *dp; struct buf *bp; u_int dsize; - struct lfs_direct *ep, *nep; + struct lfs_dirheader *ep, *nep; int error, ret, lfs_blkoff, loc, spacefree; char *dirbuf; struct timespec ts; @@ -803,7 +803,7 @@ ulfs_direnter(struct vnode *dvp, const s dp->i_flag |= IN_CHANGE | IN_UPDATE; uvm_vnp_setsize(dvp, dp->i_size); lfs_blkoff = ulr->ulr_offset & (ump->um_mountp->mnt_stat.f_iosize - 1); - ep = (struct lfs_direct *)((char *)bp->b_data + lfs_blkoff); + ep = (struct lfs_dirheader *)((char *)bp->b_data + lfs_blkoff); ulfs_direntry_assign(fs, ep, name, namlen, inum, dtype); lfs_dir_setreclen(fs, ep, dirblksiz); #ifdef LFS_DIRHASH @@ -860,11 +860,11 @@ ulfs_direnter(struct vnode *dvp, const s * arranged that compacting the region ulr_offset to * ulr_offset + ulr_count would yield the space. */ - ep = (struct lfs_direct *)dirbuf; + ep = (struct lfs_dirheader *)dirbuf; dsize = (lfs_dir_getino(fs, ep) != 0) ? LFS_DIRSIZ(fs, ep) : 0; spacefree = lfs_dir_getreclen(fs, ep) - dsize; for (loc = lfs_dir_getreclen(fs, ep); loc < ulr->ulr_count; ) { - nep = (struct lfs_direct *)(dirbuf + loc); + nep = (struct lfs_dirheader *)(dirbuf + loc); /* Trim the existing slot (NB: dsize may be zero). */ lfs_dir_setreclen(fs, ep, dsize); @@ -995,7 +995,7 @@ ulfs_dirremove(struct vnode *dvp, const { struct inode *dp = VTOI(dvp); struct lfs *fs = dp->i_lfs; - struct lfs_direct *ep; + struct lfs_dirheader *ep; struct buf *bp; int error; @@ -1097,7 +1097,7 @@ ulfs_dirrewrite(struct inode *dp, off_t { struct lfs *fs = dp->i_lfs; struct buf *bp; - struct lfs_direct *ep; + struct lfs_dirheader *ep; struct vnode *vdp = ITOV(dp); int error; @@ -1136,7 +1136,7 @@ ulfs_dirempty(struct inode *ip, ino_t pa struct lfs *fs = ip->i_lfs; doff_t off; struct lfs_dirtemplate dbuf; - struct lfs_direct *dp = (struct lfs_direct *)&dbuf; + struct lfs_dirheader *dp = (struct lfs_dirheader *)&dbuf; int error, namlen; const char *name; size_t count; Index: src/sys/ufs/lfs/ulfs_vnops.c diff -u src/sys/ufs/lfs/ulfs_vnops.c:1.31 src/sys/ufs/lfs/ulfs_vnops.c:1.32 --- src/sys/ufs/lfs/ulfs_vnops.c:1.31 Tue Sep 15 15:02:01 2015 +++ src/sys/ufs/lfs/ulfs_vnops.c Tue Sep 15 15:02:25 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_vnops.c,v 1.31 2015/09/15 15:02:01 dholland Exp $ */ +/* $NetBSD: ulfs_vnops.c,v 1.32 2015/09/15 15:02:25 dholland Exp $ */ /* from NetBSD: ufs_vnops.c,v 1.213 2013/06/08 05:47:02 kardel Exp */ /*- @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.31 2015/09/15 15:02:01 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.32 2015/09/15 15:02:25 dholland Exp $"); #if defined(_KERNEL_OPT) #include "opt_lfs.h" @@ -775,7 +775,7 @@ ulfs_readdir(void *v) int *ncookies; } */ *ap = v; struct vnode *vp = ap->a_vp; - struct lfs_direct *cdp, *ecdp; + struct lfs_dirheader *cdp, *ecdp; struct dirent *ndp; char *cdbuf, *ndbuf, *endp; struct uio auio, *uio; @@ -816,8 +816,8 @@ ulfs_readdir(void *v) rcount -= auio.uio_resid; - cdp = (struct lfs_direct *)(void *)cdbuf; - ecdp = (struct lfs_direct *)(void *)&cdbuf[rcount]; + cdp = (struct lfs_dirheader *)(void *)cdbuf; + ecdp = (struct lfs_dirheader *)(void *)&cdbuf[rcount]; ndbufsz = count; ndbuf = kmem_alloc(ndbufsz, KM_SLEEP);