freebsd-dev/sbin/growfs
Gavin Atkinson 08f353ebe3 When growing a UFS1 filesystem, we need to initialise all inodes in any new
cylinder groups that are created.  When the filesystem is first created,
newfs always initialises the first two blocks of inodes, and then in the
UFS1 case will also initialise the remaining inode blocks.  The changes in
growfs.c 1.23 broke the initialisation of all inodes, seemingly based on
this implementation detail in newfs(8).  The result was that instead of
initialising all inodes, we would actually end up initialising all but the
first two blocks of inodes.  If the filesystem was grown into empty
(all-zeros) space then the resulting filesystem was fine, however when
grown onto non-zeroed space the filesystem produced would appear to have
massive corruption on the first fsck after growing.
A test case for this problem can be found in the PR audit trail.

Fix this by once again initialising all inodes in the UFS1 case.

PR:		bin/115174
Submitted by:	Nate Eldredgei  nge cs.hmc.edu
Reviewed by:	mjacob
MFC after:	1 month
2010-02-13 16:22:08 +00:00
..
debug.c Teach about new fields (cg_unrefs and fs_unrefs) and new FS_GJOURNAL flag. 2006-10-31 22:02:24 +00:00
debug.h Parenthesised string literals are invalid in initialisers for character arrays. 2004-07-06 17:48:34 +00:00
growfs.8 Sort sections. 2005-01-18 10:09:38 +00:00
growfs.c When growing a UFS1 filesystem, we need to initialise all inodes in any new 2010-02-13 16:22:08 +00:00
Makefile Switch the default WARNS level for sbin/ to 6. 2009-10-19 16:00:24 +00:00