Module Name: src
Committed By: dholland
Date: Sat Jun 8 02:09:36 UTC 2013
Modified Files:
src/libexec/lfs_cleanerd: lfs_cleanerd.c
src/sbin/fsck_lfs: inode.c pass6.c segwrite.c setup.c
src/sbin/newfs_lfs: make_lfs.c
src/sys/ufs/lfs: lfs.h ulfs_dinode.h
Log Message:
Move the dinode (on-disk inode) structures to lfs.h, since they are
and will be obviously required by userland tools that need to read
the on-disk structures.
Also, DINODE{1,2}_SIZE -> LFS_DINODE{1,2}_SIZE.
To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/libexec/lfs_cleanerd/lfs_cleanerd.c
cvs rdiff -u -r1.45 -r1.46 src/sbin/fsck_lfs/inode.c
cvs rdiff -u -r1.27 -r1.28 src/sbin/fsck_lfs/pass6.c
cvs rdiff -u -r1.23 -r1.24 src/sbin/fsck_lfs/segwrite.c
cvs rdiff -u -r1.41 -r1.42 src/sbin/fsck_lfs/setup.c
cvs rdiff -u -r1.22 -r1.23 src/sbin/newfs_lfs/make_lfs.c
cvs rdiff -u -r1.142 -r1.143 src/sys/ufs/lfs/lfs.h
cvs rdiff -u -r1.4 -r1.5 src/sys/ufs/lfs/ulfs_dinode.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/libexec/lfs_cleanerd/lfs_cleanerd.c
diff -u src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.33 src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.34
--- src/libexec/lfs_cleanerd/lfs_cleanerd.c:1.33 Thu Jun 6 00:53:35 2013
+++ src/libexec/lfs_cleanerd/lfs_cleanerd.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_cleanerd.c,v 1.33 2013/06/06 00:53:35 dholland Exp $ */
+/* $NetBSD: lfs_cleanerd.c,v 1.34 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -485,7 +485,7 @@ parse_pseg(struct clfs *fs, daddr_t dadd
bip[*bic - 1].bi_segcreate = ssp->ss_create;
bip[*bic - 1].bi_version = dip[i].di_gen;
bip[*bic - 1].bi_bp = &(dip[i]);
- bip[*bic - 1].bi_size = DINODE1_SIZE;
+ bip[*bic - 1].bi_size = LFS_DINODE1_SIZE;
}
inoc += i;
daddr += btofsb(fs, fs->lfs_ibsize);
Index: src/sbin/fsck_lfs/inode.c
diff -u src/sbin/fsck_lfs/inode.c:1.45 src/sbin/fsck_lfs/inode.c:1.46
--- src/sbin/fsck_lfs/inode.c:1.45 Thu Jun 6 00:54:49 2013
+++ src/sbin/fsck_lfs/inode.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: inode.c,v 1.45 2013/06/06 00:54:49 dholland Exp $ */
+/* $NetBSD: inode.c,v 1.46 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -113,7 +113,7 @@ ginode(ino_t ino)
if (din_table[ino] == 0x0) {
LFS_IENTRY(ifp, fs, ino, bp);
din_table[ino] = ifp->if_daddr;
- seg_table[dtosn(fs, ifp->if_daddr)].su_nbytes += DINODE1_SIZE;
+ seg_table[dtosn(fs, ifp->if_daddr)].su_nbytes += LFS_DINODE1_SIZE;
brelse(bp, 0);
}
return (VTOI(vp)->i_din.ffs1_din);
@@ -476,9 +476,9 @@ clearinode(ino_t inumber)
SEGUSE *sup;
u_int32_t oldsn = dtosn(fs, daddr);
- seg_table[oldsn].su_nbytes -= DINODE1_SIZE;
+ seg_table[oldsn].su_nbytes -= LFS_DINODE1_SIZE;
LFS_SEGENTRY(sup, fs, oldsn, bp);
- sup->su_nbytes -= DINODE1_SIZE;
+ sup->su_nbytes -= LFS_DINODE1_SIZE;
LFS_WRITESEGENTRY(sup, fs, oldsn, bp); /* Ifile */
}
}
Index: src/sbin/fsck_lfs/pass6.c
diff -u src/sbin/fsck_lfs/pass6.c:1.27 src/sbin/fsck_lfs/pass6.c:1.28
--- src/sbin/fsck_lfs/pass6.c:1.27 Thu Jun 6 00:54:49 2013
+++ src/sbin/fsck_lfs/pass6.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: pass6.c,v 1.27 2013/06/06 00:54:49 dholland Exp $ */
+/* $NetBSD: pass6.c,v 1.28 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -237,9 +237,9 @@ remove_ino(struct uvnode *vp, ino_t ino)
vp = lfs_raw_vget(fs, ino, fs->lfs_ivnode->v_fd, daddr);
LFS_SEGENTRY(sup, fs, dtosn(fs, daddr), sbp);
- sup->su_nbytes -= DINODE1_SIZE;
+ sup->su_nbytes -= LFS_DINODE1_SIZE;
VOP_BWRITE(sbp);
- seg_table[dtosn(fs, daddr)].su_nbytes -= DINODE1_SIZE;
+ seg_table[dtosn(fs, daddr)].su_nbytes -= LFS_DINODE1_SIZE;
} else
brelse(bp, 0);
@@ -454,15 +454,15 @@ readdress_inode(struct ulfs1_dinode *dp,
/* Finally account the inode itself */
sn = dtosn(fs, odaddr);
LFS_SEGENTRY(sup, fs, sn, bp);
- sup->su_nbytes -= DINODE1_SIZE;
+ sup->su_nbytes -= LFS_DINODE1_SIZE;
VOP_BWRITE(bp);
- seg_table[sn].su_nbytes -= DINODE1_SIZE;
+ seg_table[sn].su_nbytes -= LFS_DINODE1_SIZE;
sn = dtosn(fs, daddr);
LFS_SEGENTRY(sup, fs, sn, bp);
- sup->su_nbytes += DINODE1_SIZE;
+ sup->su_nbytes += LFS_DINODE1_SIZE;
VOP_BWRITE(bp);
- seg_table[sn].su_nbytes += DINODE1_SIZE;
+ seg_table[sn].su_nbytes += LFS_DINODE1_SIZE;
}
/*
@@ -521,9 +521,9 @@ alloc_inode(ino_t thisino, ulfs_daddr_t
/* Account for new location */
LFS_SEGENTRY(sup, fs, dtosn(fs, daddr), bp);
- sup->su_nbytes += DINODE1_SIZE;
+ sup->su_nbytes += LFS_DINODE1_SIZE;
VOP_BWRITE(bp);
- seg_table[dtosn(fs, daddr)].su_nbytes += DINODE1_SIZE;
+ seg_table[dtosn(fs, daddr)].su_nbytes += LFS_DINODE1_SIZE;
}
/*
Index: src/sbin/fsck_lfs/segwrite.c
diff -u src/sbin/fsck_lfs/segwrite.c:1.23 src/sbin/fsck_lfs/segwrite.c:1.24
--- src/sbin/fsck_lfs/segwrite.c:1.23 Thu Jun 6 00:54:49 2013
+++ src/sbin/fsck_lfs/segwrite.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: segwrite.c,v 1.23 2013/06/06 00:54:49 dholland Exp $ */
+/* $NetBSD: segwrite.c,v 1.24 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -346,7 +346,7 @@ lfs_writeinode(struct lfs * fs, struct s
if (daddr != LFS_UNUSED_DADDR) {
u_int32_t oldsn = dtosn(fs, daddr);
LFS_SEGENTRY(sup, fs, oldsn, bp);
- sup->su_nbytes -= DINODE1_SIZE;
+ sup->su_nbytes -= LFS_DINODE1_SIZE;
redo_ifile =
(ino == LFS_IFILE_INUM && !(bp->b_flags & B_GATHERED));
if (redo_ifile)
@@ -769,7 +769,7 @@ lfs_writeseg(struct lfs * fs, struct seg
ssp->ss_flags |= SS_RFW;
ninos = (ssp->ss_ninos + INOPB(fs) - 1) / INOPB(fs);
- sup->su_nbytes += ssp->ss_ninos * DINODE1_SIZE;
+ sup->su_nbytes += ssp->ss_ninos * LFS_DINODE1_SIZE;
if (fs->lfs_version == 1)
sup->su_olastmod = write_time;
Index: src/sbin/fsck_lfs/setup.c
diff -u src/sbin/fsck_lfs/setup.c:1.41 src/sbin/fsck_lfs/setup.c:1.42
--- src/sbin/fsck_lfs/setup.c:1.41 Thu Jun 6 00:54:49 2013
+++ src/sbin/fsck_lfs/setup.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: setup.c,v 1.41 2013/06/06 00:54:49 dholland Exp $ */
+/* $NetBSD: setup.c,v 1.42 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -434,7 +434,7 @@ setup(const char *dev)
/* Initialize Ifile entry */
din_table[fs->lfs_ifile] = fs->lfs_idaddr;
- seg_table[dtosn(fs, fs->lfs_idaddr)].su_nbytes += DINODE1_SIZE;
+ seg_table[dtosn(fs, fs->lfs_idaddr)].su_nbytes += LFS_DINODE1_SIZE;
#ifndef VERBOSE_BLOCKMAP
bmapsize = roundup(howmany(maxfsblock, NBBY), sizeof(int16_t));
Index: src/sbin/newfs_lfs/make_lfs.c
diff -u src/sbin/newfs_lfs/make_lfs.c:1.22 src/sbin/newfs_lfs/make_lfs.c:1.23
--- src/sbin/newfs_lfs/make_lfs.c:1.22 Thu Jun 6 00:54:49 2013
+++ src/sbin/newfs_lfs/make_lfs.c Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: make_lfs.c,v 1.22 2013/06/06 00:54:49 dholland Exp $ */
+/* $NetBSD: make_lfs.c,v 1.23 2013/06/08 02:09:35 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.22 2013/06/06 00:54:49 dholland Exp $");
+__RCSID("$NetBSD: make_lfs.c,v 1.23 2013/06/08 02:09:35 dholland Exp $");
#endif
#endif /* not lint */
@@ -452,7 +452,7 @@ make_lfs(int devfd, uint secsize, struct
fs->lfs_minfree = minfree;
if (version > 1) {
- fs->lfs_inopf = secsize/DINODE1_SIZE;
+ fs->lfs_inopf = secsize/LFS_DINODE1_SIZE;
fs->lfs_interleave = interleave;
if (roll_id == 0)
roll_id = arc4random();
Index: src/sys/ufs/lfs/lfs.h
diff -u src/sys/ufs/lfs/lfs.h:1.142 src/sys/ufs/lfs/lfs.h:1.143
--- src/sys/ufs/lfs/lfs.h:1.142 Sat Jun 8 02:04:31 2013
+++ src/sys/ufs/lfs/lfs.h Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs.h,v 1.142 2013/06/08 02:04:31 dholland Exp $ */
+/* $NetBSD: lfs.h,v 1.143 2013/06/08 02:09:35 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -124,7 +124,7 @@
#define LFS_INVERSE_MAX_BYTES(n) LFS_INVERSE_MAX_RESOURCE(n, PAGE_SIZE)
#define LFS_WAIT_BYTES LFS_WAIT_RESOURCE(bufmem_lowater, PAGE_SIZE)
#define LFS_MAX_DIROP ((desiredvnodes >> 2) + (desiredvnodes >> 3))
-#define SIZEOF_DIROP(fs) (2 * ((fs)->lfs_bsize + DINODE1_SIZE))
+#define SIZEOF_DIROP(fs) (2 * ((fs)->lfs_bsize + LFS_DINODE1_SIZE))
#define LFS_MAX_FSDIROP(fs) \
((fs)->lfs_nclean <= (fs)->lfs_resvseg ? 0 : \
(((fs)->lfs_nclean - (fs)->lfs_resvseg) * (fs)->lfs_ssize) / \
@@ -194,6 +194,84 @@ typedef struct lfs_res_blk {
#define MAXDIRSIZE (0x7fffffff)
/*
+ * Inodes
+ */
+
+/*
+ * A dinode contains all the meta-data associated with a ULFS file.
+ * This structure defines the on-disk format of a dinode. Since
+ * this structure describes an on-disk structure, all its fields
+ * are defined by types with precise widths.
+ */
+
+struct ulfs1_dinode {
+ u_int16_t di_mode; /* 0: IFMT, permissions; see below. */
+ int16_t di_nlink; /* 2: File link count. */
+ union {
+ u_int16_t oldids[2]; /* 4: Ffs: old user and group ids. */
+ u_int32_t inumber; /* 4: Lfs: inode number. */
+ } di_u;
+ u_int64_t di_size; /* 8: File byte count. */
+ int32_t di_atime; /* 16: Last access time. */
+ int32_t di_atimensec; /* 20: Last access time. */
+ int32_t di_mtime; /* 24: Last modified time. */
+ int32_t di_mtimensec; /* 28: Last modified time. */
+ int32_t di_ctime; /* 32: Last inode change time. */
+ int32_t di_ctimensec; /* 36: Last inode change time. */
+ int32_t di_db[ULFS_NDADDR]; /* 40: Direct disk blocks. */
+ int32_t di_ib[ULFS_NIADDR]; /* 88: Indirect disk blocks. */
+ u_int32_t di_flags; /* 100: Status flags (chflags). */
+ u_int32_t di_blocks; /* 104: Blocks actually held. */
+ int32_t di_gen; /* 108: Generation number. */
+ u_int32_t di_uid; /* 112: File owner. */
+ u_int32_t di_gid; /* 116: File group. */
+ u_int64_t di_modrev; /* 120: i_modrev for NFSv4 */
+};
+
+struct ulfs2_dinode {
+ u_int16_t di_mode; /* 0: IFMT, permissions; see below. */
+ int16_t di_nlink; /* 2: File link count. */
+ u_int32_t di_uid; /* 4: File owner. */
+ u_int32_t di_gid; /* 8: File group. */
+ u_int32_t di_blksize; /* 12: Inode blocksize. */
+ u_int64_t di_size; /* 16: File byte count. */
+ u_int64_t di_blocks; /* 24: Bytes actually held. */
+ int64_t di_atime; /* 32: Last access time. */
+ int64_t di_mtime; /* 40: Last modified time. */
+ int64_t di_ctime; /* 48: Last inode change time. */
+ int64_t di_birthtime; /* 56: Inode creation time. */
+ int32_t di_mtimensec; /* 64: Last modified time. */
+ int32_t di_atimensec; /* 68: Last access time. */
+ int32_t di_ctimensec; /* 72: Last inode change time. */
+ int32_t di_birthnsec; /* 76: Inode creation time. */
+ int32_t di_gen; /* 80: Generation number. */
+ u_int32_t di_kernflags; /* 84: Kernel flags. */
+ u_int32_t di_flags; /* 88: Status flags (chflags). */
+ int32_t di_extsize; /* 92: External attributes block. */
+ int64_t di_extb[ULFS_NXADDR];/* 96: External attributes block. */
+ int64_t di_db[ULFS_NDADDR]; /* 112: Direct disk blocks. */
+ int64_t di_ib[ULFS_NIADDR]; /* 208: Indirect disk blocks. */
+ u_int64_t di_modrev; /* 232: i_modrev for NFSv4 */
+ int64_t di_spare[2]; /* 240: Reserved; currently unused */
+};
+
+/*
+ * The di_db fields may be overlaid with other information for
+ * file types that do not have associated disk storage. Block
+ * and character devices overlay the first data block with their
+ * dev_t value. Short symbolic links place their path in the
+ * di_db area.
+ */
+#define di_inumber di_u.inumber
+#define di_ogid di_u.oldids[1]
+#define di_ouid di_u.oldids[0]
+#define di_rdev di_db[0]
+
+/* Size of the on-disk inode. */
+#define LFS_DINODE1_SIZE (sizeof(struct ulfs1_dinode)) /* 128 */
+#define LFS_DINODE2_SIZE (sizeof(struct ulfs2_dinode))
+
+/*
* "struct buf" associated definitions
*/
Index: src/sys/ufs/lfs/ulfs_dinode.h
diff -u src/sys/ufs/lfs/ulfs_dinode.h:1.4 src/sys/ufs/lfs/ulfs_dinode.h:1.5
--- src/sys/ufs/lfs/ulfs_dinode.h:1.4 Thu Jun 6 01:25:25 2013
+++ src/sys/ufs/lfs/ulfs_dinode.h Sat Jun 8 02:09:35 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ulfs_dinode.h,v 1.4 2013/06/06 01:25:25 dholland Exp $ */
+/* $NetBSD: ulfs_dinode.h,v 1.5 2013/06/08 02:09:35 dholland Exp $ */
/* from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp */
/*
@@ -72,74 +72,8 @@
#define ULFS_WINO ((ino_t)1)
/*
- * A dinode contains all the meta-data associated with a ULFS file.
- * This structure defines the on-disk format of a dinode. Since
- * this structure describes an on-disk structure, all its fields
- * are defined by types with precise widths.
+ * Maximum length of a symlink that can be stored within the inode.
*/
-
-struct ulfs1_dinode {
- u_int16_t di_mode; /* 0: IFMT, permissions; see below. */
- int16_t di_nlink; /* 2: File link count. */
- union {
- u_int16_t oldids[2]; /* 4: Ffs: old user and group ids. */
- u_int32_t inumber; /* 4: Lfs: inode number. */
- } di_u;
- u_int64_t di_size; /* 8: File byte count. */
- int32_t di_atime; /* 16: Last access time. */
- int32_t di_atimensec; /* 20: Last access time. */
- int32_t di_mtime; /* 24: Last modified time. */
- int32_t di_mtimensec; /* 28: Last modified time. */
- int32_t di_ctime; /* 32: Last inode change time. */
- int32_t di_ctimensec; /* 36: Last inode change time. */
- int32_t di_db[ULFS_NDADDR]; /* 40: Direct disk blocks. */
- int32_t di_ib[ULFS_NIADDR]; /* 88: Indirect disk blocks. */
- u_int32_t di_flags; /* 100: Status flags (chflags). */
- u_int32_t di_blocks; /* 104: Blocks actually held. */
- int32_t di_gen; /* 108: Generation number. */
- u_int32_t di_uid; /* 112: File owner. */
- u_int32_t di_gid; /* 116: File group. */
- u_int64_t di_modrev; /* 120: i_modrev for NFSv4 */
-};
-
-struct ulfs2_dinode {
- u_int16_t di_mode; /* 0: IFMT, permissions; see below. */
- int16_t di_nlink; /* 2: File link count. */
- u_int32_t di_uid; /* 4: File owner. */
- u_int32_t di_gid; /* 8: File group. */
- u_int32_t di_blksize; /* 12: Inode blocksize. */
- u_int64_t di_size; /* 16: File byte count. */
- u_int64_t di_blocks; /* 24: Bytes actually held. */
- int64_t di_atime; /* 32: Last access time. */
- int64_t di_mtime; /* 40: Last modified time. */
- int64_t di_ctime; /* 48: Last inode change time. */
- int64_t di_birthtime; /* 56: Inode creation time. */
- int32_t di_mtimensec; /* 64: Last modified time. */
- int32_t di_atimensec; /* 68: Last access time. */
- int32_t di_ctimensec; /* 72: Last inode change time. */
- int32_t di_birthnsec; /* 76: Inode creation time. */
- int32_t di_gen; /* 80: Generation number. */
- u_int32_t di_kernflags; /* 84: Kernel flags. */
- u_int32_t di_flags; /* 88: Status flags (chflags). */
- int32_t di_extsize; /* 92: External attributes block. */
- int64_t di_extb[ULFS_NXADDR];/* 96: External attributes block. */
- int64_t di_db[ULFS_NDADDR]; /* 112: Direct disk blocks. */
- int64_t di_ib[ULFS_NIADDR]; /* 208: Indirect disk blocks. */
- u_int64_t di_modrev; /* 232: i_modrev for NFSv4 */
- int64_t di_spare[2]; /* 240: Reserved; currently unused */
-};
-
-/*
- * The di_db fields may be overlaid with other information for
- * file types that do not have associated disk storage. Block
- * and character devices overlay the first data block with their
- * dev_t value. Short symbolic links place their path in the
- * di_db area.
- */
-#define di_inumber di_u.inumber
-#define di_ogid di_u.oldids[1]
-#define di_ouid di_u.oldids[0]
-#define di_rdev di_db[0]
#define ULFS1_MAXSYMLINKLEN ((ULFS_NDADDR + ULFS_NIADDR) * sizeof(int32_t))
#define ULFS2_MAXSYMLINKLEN ((ULFS_NDADDR + ULFS_NIADDR) * sizeof(int64_t))
@@ -166,8 +100,4 @@ struct ulfs2_dinode {
#define IFSOCK 0140000 /* UNIX domain socket. */
#define IFWHT 0160000 /* Whiteout. */
-/* Size of the on-disk inode. */
-#define DINODE1_SIZE (sizeof(struct ulfs1_dinode)) /* 128 */
-#define DINODE2_SIZE (sizeof(struct ulfs2_dinode))
-
#endif /* !_UFS_LFS_ULFS_DINODE_H_ */