Module Name:    src
Committed By:   dholland
Date:           Tue Sep  1 06:11:06 UTC 2015

Modified Files:
        src/sbin/fsck_lfs: pass0.c
        src/sys/ufs/lfs: lfs.h lfs_accessors.h lfs_debug.c lfs_vfsops.c
        src/usr.sbin/dumplfs: dumplfs.c

Log Message:
Make the inode fields in the 64-bit superblock 64 bits wide.
Reasoning as before.

Note that I am not going through and checking for 64->32 truncations
in inode numbers; I'm sure there are quite a few, but that's a project
for later.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sbin/fsck_lfs/pass0.c
cvs rdiff -u -r1.181 -r1.182 src/sys/ufs/lfs/lfs.h
cvs rdiff -u -r1.17 -r1.18 src/sys/ufs/lfs/lfs_accessors.h
cvs rdiff -u -r1.52 -r1.53 src/sys/ufs/lfs/lfs_debug.c
cvs rdiff -u -r1.343 -r1.344 src/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -u -r1.55 -r1.56 src/usr.sbin/dumplfs/dumplfs.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/pass0.c
diff -u src/sbin/fsck_lfs/pass0.c:1.41 src/sbin/fsck_lfs/pass0.c:1.42
--- src/sbin/fsck_lfs/pass0.c:1.41	Sun Aug 23 16:00:23 2015
+++ src/sbin/fsck_lfs/pass0.c	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: pass0.c,v 1.41 2015/08/23 16:00:23 christos Exp $	 */
+/* $NetBSD: pass0.c,v 1.42 2015/09/01 06:11:06 dholland Exp $	 */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -200,8 +200,8 @@ pass0(void)
 		writeit = 1;
 	}
 	if (freehd != lfs_sb_getfreehd(fs)) {
-		pwarn("FREE LIST HEAD IN SUPERBLOCK SHOULD BE %ju (WAS %u)\n",
-			(uintmax_t)freehd, lfs_sb_getfreehd(fs));
+		pwarn("FREE LIST HEAD IN SUPERBLOCK SHOULD BE %ju (WAS %ju)\n",
+			(uintmax_t)freehd, (uintmax_t)lfs_sb_getfreehd(fs));
 		if (preen || reply("FIX")) {
 			lfs_sb_setfreehd(fs, freehd);
 			sbdirty();

Index: src/sys/ufs/lfs/lfs.h
diff -u src/sys/ufs/lfs/lfs.h:1.181 src/sys/ufs/lfs/lfs.h:1.182
--- src/sys/ufs/lfs/lfs.h:1.181	Tue Sep  1 06:10:16 2015
+++ src/sys/ufs/lfs/lfs.h	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs.h,v 1.181 2015/09/01 06:10:16 dholland Exp $	*/
+/*	$NetBSD: lfs.h,v 1.182 2015/09/01 06:11:06 dholland Exp $	*/
 
 /*  from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp  */
 /*  from NetBSD: dir.h,v 1.21 2009/07/22 04:49:19 dholland Exp  */
@@ -789,63 +789,63 @@ struct dlfs64 {
 	u_int32_t dlfs_frag;	  /* 36: number of frags in a block in fs */
 
 /* Checkpoint region. */
-	u_int32_t dlfs_freehd;	  /* 40: start of the free inode list */
-	u_int32_t dlfs_nfiles;	  /* 44: number of allocated inodes */
-	int64_t   dlfs_bfree;	  /* 48: number of free frags */
-	int64_t	  dlfs_avail;	  /* 56: blocks available for writing */
-	int64_t	  dlfs_idaddr;	  /* 64: inode file disk address */
-	int32_t	  dlfs_uinodes;	  /* 72: inodes in cache not yet on disk */
-	u_int32_t dlfs_ifile;	  /* 76: inode file inode number */
-	int64_t	  dlfs_lastseg;	  /* 80: address of last segment written */
-	int64_t	  dlfs_nextseg;	  /* 88: address of next segment to write */
-	int64_t	  dlfs_curseg;	  /* 96: current segment being written */
-	int64_t	  dlfs_offset;	  /* 104: offset in curseg for next partial */
-	int64_t	  dlfs_lastpseg;  /* 112: address of last partial written */
-	u_int32_t dlfs_inopf;	  /* 120: inodes per frag */
+	u_int64_t dlfs_freehd;	  /* 40: start of the free inode list */
+	u_int64_t dlfs_nfiles;	  /* 48: number of allocated inodes */
+	int64_t   dlfs_bfree;	  /* 56: number of free frags */
+	int64_t	  dlfs_avail;	  /* 64: blocks available for writing */
+	int64_t	  dlfs_idaddr;	  /* 72: inode file disk address */
+	int32_t	  dlfs_uinodes;	  /* 80: inodes in cache not yet on disk */
+	u_int32_t dlfs_ifile;	  /* 84: inode file inode number */
+	int64_t	  dlfs_lastseg;	  /* 88: address of last segment written */
+	int64_t	  dlfs_nextseg;	  /* 96: address of next segment to write */
+	int64_t	  dlfs_curseg;	  /* 104: current segment being written */
+	int64_t	  dlfs_offset;	  /* 112: offset in curseg for next partial */
+	int64_t	  dlfs_lastpseg;  /* 120: address of last partial written */
+	u_int32_t dlfs_inopf;	  /* 128: inodes per frag */
 
 /* These are configuration parameters. */
-	u_int32_t dlfs_minfree;	  /* 124: minimum percentage of free blocks */
+	u_int32_t dlfs_minfree;	  /* 132: minimum percentage of free blocks */
 
 /* These fields can be computed from the others. */
-	u_int64_t dlfs_maxfilesize; /* 128: maximum representable file size */
-	u_int32_t dlfs_fsbpseg;	  /* 136: frags (fsb) per segment */
-	u_int32_t dlfs_inopb;	  /* 140: inodes per block */
-	u_int32_t dlfs_ifpb;	  /* 144: IFILE entries per block */
-	u_int32_t dlfs_sepb;	  /* 148: SEGUSE entries per block */
-	u_int32_t dlfs_nindir;	  /* 152: indirect pointers per block */
-	u_int32_t dlfs_nseg;	  /* 156: number of segments */
-	u_int32_t dlfs_nspf;	  /* 160: number of sectors per fragment */
-	u_int32_t dlfs_cleansz;	  /* 164: cleaner info size in blocks */
-	u_int32_t dlfs_segtabsz;  /* 168: segment table size in blocks */
-	u_int32_t dlfs_bshift;	  /* 172: calc block number from file offset */
-	u_int32_t dlfs_ffshift;	  /* 176: fast mult/div for frag from file */
-	u_int32_t dlfs_fbshift;	  /* 180: fast mult/div for frag from block */
-	u_int64_t dlfs_bmask;	  /* 184: calc block offset from file offset */
-	u_int64_t dlfs_ffmask;	  /* 192: calc frag offset from file offset */
-	u_int64_t dlfs_fbmask;	  /* 200: calc frag offset from block offset */
-	u_int32_t dlfs_blktodb;	  /* 208: blktodb and dbtoblk shift constant */
-	u_int32_t dlfs_sushift;	  /* 212: fast mult/div for segusage table */
+	u_int64_t dlfs_maxfilesize; /* 136: maximum representable file size */
+	u_int32_t dlfs_fsbpseg;	  /* 144: frags (fsb) per segment */
+	u_int32_t dlfs_inopb;	  /* 148: inodes per block */
+	u_int32_t dlfs_ifpb;	  /* 152: IFILE entries per block */
+	u_int32_t dlfs_sepb;	  /* 156: SEGUSE entries per block */
+	u_int32_t dlfs_nindir;	  /* 160: indirect pointers per block */
+	u_int32_t dlfs_nseg;	  /* 164: number of segments */
+	u_int32_t dlfs_nspf;	  /* 168: number of sectors per fragment */
+	u_int32_t dlfs_cleansz;	  /* 172: cleaner info size in blocks */
+	u_int32_t dlfs_segtabsz;  /* 176: segment table size in blocks */
+	u_int32_t dlfs_bshift;	  /* 180: calc block number from file offset */
+	u_int32_t dlfs_ffshift;	  /* 184: fast mult/div for frag from file */
+	u_int32_t dlfs_fbshift;	  /* 188: fast mult/div for frag from block */
+	u_int64_t dlfs_bmask;	  /* 192: calc block offset from file offset */
+	u_int64_t dlfs_ffmask;	  /* 200: calc frag offset from file offset */
+	u_int64_t dlfs_fbmask;	  /* 208: calc frag offset from block offset */
+	u_int32_t dlfs_blktodb;	  /* 216: blktodb and dbtoblk shift constant */
+	u_int32_t dlfs_sushift;	  /* 220: fast mult/div for segusage table */
 
-				  /* 216: superblock disk offsets */
+				  /* 224: superblock disk offsets */
 	int64_t	   dlfs_sboffs[LFS_MAXNUMSB];
 
-	int32_t	  dlfs_maxsymlinklen; /* 296: max len of an internal symlink */
-	u_int32_t dlfs_nclean;	  /* 300: Number of clean segments */
-	u_char	  dlfs_fsmnt[MNAMELEN];	 /* 304: name mounted on */
-	u_int16_t dlfs_pflags;	  /* 394: file system persistent flags */
-	int32_t	  dlfs_dmeta;	  /* 396: total number of dirty summaries */
-	u_int32_t dlfs_minfreeseg; /* 400: segments not counted in bfree */
-	u_int32_t dlfs_sumsize;	  /* 404: size of summary blocks */
-	u_int32_t dlfs_ibsize;	  /* 408: size of inode blocks */
-	u_int32_t dlfs_inodefmt;  /* 412: inode format version */
-	u_int64_t dlfs_serial;	  /* 416: serial number */
-	int64_t	  dlfs_s0addr;	  /* 424: start of segment 0 */
-	u_int64_t dlfs_tstamp;	  /* 432: time stamp */
-	u_int32_t dlfs_interleave; /* 440: segment interleave */
-	u_int32_t dlfs_ident;	  /* 444: per-fs identifier */
-	u_int32_t dlfs_fsbtodb;	  /* 448: fsbtodb and dbtodsb shift constant */
-	u_int32_t dlfs_resvseg;   /* 452: segments reserved for the cleaner */
-	int8_t	  dlfs_pad[52];   /* 456: round to 512 bytes */
+	int32_t	  dlfs_maxsymlinklen; /* 304: max len of an internal symlink */
+	u_int32_t dlfs_nclean;	  /* 308: Number of clean segments */
+	u_char	  dlfs_fsmnt[MNAMELEN];	 /* 312: name mounted on */
+	u_int16_t dlfs_pflags;	  /* 402: file system persistent flags */
+	int32_t	  dlfs_dmeta;	  /* 404: total number of dirty summaries */
+	u_int32_t dlfs_minfreeseg; /* 408: segments not counted in bfree */
+	u_int32_t dlfs_sumsize;	  /* 412: size of summary blocks */
+	u_int32_t dlfs_ibsize;	  /* 416: size of inode blocks */
+	u_int32_t dlfs_inodefmt;  /* 420: inode format version */
+	u_int64_t dlfs_serial;	  /* 424: serial number */
+	int64_t	  dlfs_s0addr;	  /* 432: start of segment 0 */
+	u_int64_t dlfs_tstamp;	  /* 440: time stamp */
+	u_int32_t dlfs_interleave; /* 448: segment interleave */
+	u_int32_t dlfs_ident;	  /* 452: per-fs identifier */
+	u_int32_t dlfs_fsbtodb;	  /* 456: fsbtodb and dbtodsb shift constant */
+	u_int32_t dlfs_resvseg;   /* 460: segments reserved for the cleaner */
+	int8_t	  dlfs_pad[44];   /* 464: round to 512 bytes */
 /* Checksum -- last valid disk field. */
 	u_int32_t dlfs_cksum;	  /* 508: checksum for superblock checking */
 };

Index: src/sys/ufs/lfs/lfs_accessors.h
diff -u src/sys/ufs/lfs/lfs_accessors.h:1.17 src/sys/ufs/lfs/lfs_accessors.h:1.18
--- src/sys/ufs/lfs/lfs_accessors.h:1.17	Tue Sep  1 06:10:16 2015
+++ src/sys/ufs/lfs/lfs_accessors.h	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_accessors.h,v 1.17 2015/09/01 06:10:16 dholland Exp $	*/
+/*	$NetBSD: lfs_accessors.h,v 1.18 2015/09/01 06:11:06 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  */
@@ -919,9 +919,9 @@ LFS_DEF_SB_ACCESSOR_FULL(u_int64_t, u_in
 LFS_DEF_SB_ACCESSOR(u_int32_t, bsize);
 LFS_DEF_SB_ACCESSOR(u_int32_t, fsize);
 LFS_DEF_SB_ACCESSOR(u_int32_t, frag);
-LFS_DEF_SB_ACCESSOR(u_int32_t, freehd);
+LFS_DEF_SB_ACCESSOR_FULL(uint64_t, uint32_t, freehd);
 LFS_DEF_SB_ACCESSOR_FULL(int64_t, int32_t, bfree);
-LFS_DEF_SB_ACCESSOR(u_int32_t, nfiles);
+LFS_DEF_SB_ACCESSOR_FULL(uint64_t, uint32_t, nfiles);
 LFS_DEF_SB_ACCESSOR_FULL(int64_t, int32_t, avail);
 LFS_DEF_SB_ACCESSOR(int32_t, uinodes);
 LFS_DEF_SB_ACCESSOR_FULL(int64_t, int32_t, idaddr);

Index: src/sys/ufs/lfs/lfs_debug.c
diff -u src/sys/ufs/lfs/lfs_debug.c:1.52 src/sys/ufs/lfs/lfs_debug.c:1.53
--- src/sys/ufs/lfs/lfs_debug.c:1.52	Wed Aug 12 18:28:01 2015
+++ src/sys/ufs/lfs/lfs_debug.c	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_debug.c,v 1.52 2015/08/12 18:28:01 dholland Exp $	*/
+/*	$NetBSD: lfs_debug.c,v 1.53 2015/09/01 06:11:06 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_debug.c,v 1.52 2015/08/12 18:28:01 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_debug.c,v 1.53 2015/09/01 06:11:06 dholland Exp $");
 
 #ifdef DEBUG
 
@@ -176,13 +176,13 @@ lfs_dump_super(struct lfs *lfsp)
 	printf("\n");
 
 	printf("Checkpoint Info\n");
-	printf("%s%d\t%s%jx\t%s%d\n",
-	       "freehd	 ", lfs_sb_getfreehd(lfsp),
+	printf("%s%ju\t%s%jx\t%s%d\n",
+	       "freehd	 ", (uintmax_t)lfs_sb_getfreehd(lfsp),
 	       "idaddr	 ", (intmax_t)lfs_sb_getidaddr(lfsp),
 	       "ifile	 ", lfs_sb_getifile(lfsp));
-	printf("%s%jx\t%s%d\t%s%jx\t%s%jx\t%s%jx\t%s%jx\n",
+	printf("%s%jx\t%s%ju\t%s%jx\t%s%jx\t%s%jx\t%s%jx\n",
 	       "bfree	 ", (intmax_t)lfs_sb_getbfree(lfsp),
-	       "nfiles	 ", lfs_sb_getnfiles(lfsp),
+	       "nfiles	 ", (uintmax_t)lfs_sb_getnfiles(lfsp),
 	       "lastseg	 ", (intmax_t)lfs_sb_getlastseg(lfsp),
 	       "nextseg	 ", (intmax_t)lfs_sb_getnextseg(lfsp),
 	       "curseg	 ", (intmax_t)lfs_sb_getcurseg(lfsp),

Index: src/sys/ufs/lfs/lfs_vfsops.c
diff -u src/sys/ufs/lfs/lfs_vfsops.c:1.343 src/sys/ufs/lfs/lfs_vfsops.c:1.344
--- src/sys/ufs/lfs/lfs_vfsops.c:1.343	Tue Sep  1 06:10:16 2015
+++ src/sys/ufs/lfs/lfs_vfsops.c	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_vfsops.c,v 1.343 2015/09/01 06:10:16 dholland Exp $	*/
+/*	$NetBSD: lfs_vfsops.c,v 1.344 2015/09/01 06:11:06 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.343 2015/09/01 06:10:16 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.344 2015/09/01 06:11:06 dholland Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_lfs.h"
@@ -843,6 +843,9 @@ lfs_mountfs(struct vnode *devvp, struct 
 
 	cred = l ? l->l_cred : NOCRED;
 
+	/* The superblock is supposed to be 512 bytes. */
+	__CTASSERT(sizeof(struct dlfs) == DEV_BSIZE);
+
 	/*
 	 * Flush out any old buffers remaining from a previous use.
 	 */

Index: src/usr.sbin/dumplfs/dumplfs.c
diff -u src/usr.sbin/dumplfs/dumplfs.c:1.55 src/usr.sbin/dumplfs/dumplfs.c:1.56
--- src/usr.sbin/dumplfs/dumplfs.c:1.55	Sat Aug 29 05:33:20 2015
+++ src/usr.sbin/dumplfs/dumplfs.c	Tue Sep  1 06:11:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: dumplfs.c,v 1.55 2015/08/29 05:33:20 dholland Exp $	*/
+/*	$NetBSD: dumplfs.c,v 1.56 2015/09/01 06:11:06 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -40,7 +40,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 19
 #if 0
 static char sccsid[] = "@(#)dumplfs.c	8.5 (Berkeley) 5/24/95";
 #else
-__RCSID("$NetBSD: dumplfs.c,v 1.55 2015/08/29 05:33:20 dholland Exp $");
+__RCSID("$NetBSD: dumplfs.c,v 1.56 2015/09/01 06:11:06 dholland Exp $");
 #endif
 #endif /* not lint */
 
@@ -816,16 +816,16 @@ dump_super(struct lfs *lfsp)
   	(void)printf("\n");
  	
  	(void)printf("  Checkpoint Info\n");
- 	(void)printf("    %s%-10d  %s0x%-8jx  %s%-10d\n",
- 		     "freehd   ", lfs_sb_getfreehd(lfsp),
+ 	(void)printf("    %s%-10ju  %s0x%-8jx  %s%-10ju\n",
+ 		     "freehd   ", (uintmax_t)lfs_sb_getfreehd(lfsp),
  		     "idaddr   ", (intmax_t)lfs_sb_getidaddr(lfsp),
- 		     "ifile    ", lfs_sb_getifile(lfsp));
+ 		     "ifile    ", (uintmax_t)lfs_sb_getifile(lfsp));
  	(void)printf("    %s%-10d  %s%-10jd  %s%-10jd\n",
  		     "uinodes  ", lfs_sb_getuinodes(lfsp),
  		     "bfree    ", (intmax_t)lfs_sb_getbfree(lfsp),
  		     "avail    ", (intmax_t)lfs_sb_getavail(lfsp));
- 	(void)printf("    %s%-10d  %s0x%-8jx  %s0x%-8jx\n",
- 		     "nfiles   ", lfs_sb_getnfiles(lfsp),
+ 	(void)printf("    %s%-10ju  %s0x%-8jx  %s0x%-8jx\n",
+ 		     "nfiles   ", (uintmax_t)lfs_sb_getnfiles(lfsp),
  		     "lastseg  ", (uintmax_t)lfs_sb_getlastseg(lfsp),
  		     "nextseg  ", (uintmax_t)lfs_sb_getnextseg(lfsp));
  	(void)printf("    %s0x%-8jx  %s0x%-8jx  %s%-10ju\n",

Reply via email to