Subject: CVS commit: basesrc/usr.sbin/dumpfs
To: None <source-changes@netbsd.org>
From: Luke Mewburn <lukem@netbsd.org>
List: source-changes
Date: 09/02/2001 04:58:32
Module Name:	basesrc
Committed By:	lukem
Date:		Sun Sep  2 01:58:32 UTC 2001

Modified Files:
	basesrc/sbin/fsck_ffs: setup.c utilities.c
	basesrc/sbin/newfs: mkfs.c
	basesrc/usr.sbin/dumpfs: dumpfs.c
	syssrc/sys/ufs/ffs: ffs_vfsops.c fs.h

Log Message:
Incorporate fix by iedowse @ FreeBSD to allow disks with large numbers of
cylinder groups to work correctly, with minor modifications by me to work
with our FFS_EI code.  From the FreeBSD commit message:

	The ffs superblock includes a 128-byte region for use by temporary
	in-core pointers to summary information. An array in this region
	(fs_csp) could overflow on filesystems with a very large number of
	cylinder groups (~16000 on i386 with 8k blocks). When this happens,
	other fields in the superblock get corrupted, and fsck refuses to
	check the filesystem.

	Solve this problem by replacing the fs_csp array in 'struct fs'
	with a single pointer, and add padding to keep the length of the
	128-byte region fixed. Update the kernel and userland utilities
	to use just this single pointer.

	With this change, the kernel no longer makes use of the superblock
	fields 'fs_csshift' and 'fs_csmask'. Add a comment to newfs/mkfs.c
	to indicate that these fields must be calculated for compatibility
	with older kernels.

	Reviewed by:    mckusick


To generate a diff of this commit:
cvs rdiff -r1.45 -r1.46 basesrc/sbin/fsck_ffs/setup.c
cvs rdiff -r1.31 -r1.32 basesrc/sbin/fsck_ffs/utilities.c
cvs rdiff -r1.53 -r1.54 basesrc/sbin/newfs/mkfs.c
cvs rdiff -r1.28 -r1.29 basesrc/usr.sbin/dumpfs/dumpfs.c
cvs rdiff -r1.83 -r1.84 syssrc/sys/ufs/ffs/ffs_vfsops.c
cvs rdiff -r1.17 -r1.18 syssrc/sys/ufs/ffs/fs.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.