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.