History log of /freebsd-10.0-release/sbin/growfs/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
259065 07-Dec-2013 gjb

- Copy stable/10 (r259064) to releng/10.0 as part of the
10.0-RELEASE cycle.
- Update __FreeBSD_version [1]
- Set branch name to -RC1

[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so
start releng/10.0 at '100' so the branch is started with
a value ending in zero.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


250377 08-May-2013 eadler

Allow the use of lowercase 'yes'

PR: bin/178422
Submitted by: Garrett Cooper <yaneurabeya@gmail.com>


249500 15-Apr-2013 delphij

Use arc4random() instead of random().

MFC after: 2 weeks


244295 16-Dec-2012 trasz

When growing a filesystem, don't leave unused space at the end
if there is not enough room for a full cylinder group.

Reviewed by: mckusick@


244243 15-Dec-2012 trasz

Fix extending filesystems of weird size by making sure the actual size
is always multiple of fragment size.


243248 18-Nov-2012 joel

Remove superfluous paragraph macro.


243246 18-Nov-2012 trasz

Make it possible to resize filesystems mounted read-write, using newly
introduced UFS write suspension mechanism.

Reviewed by: kib, mckusick
Sponsored by: FreeBSD Foundation


242379 30-Oct-2012 trasz

Fix problem with geom_label(4) not recognizing UFS labels on filesystems
extended using growfs(8). The problem here is that geom_label checks if
the filesystem size recorded in UFS superblock is equal to the provider
(i.e. device) size. This check cannot be removed due to backward
compatibility. On the other hand, in most cases growfs(8) cannot set
fs_size in the superblock to match the provider size, because, differently
from newfs(8), it cannot recompute cylinder group sizes.

To fix this problem, add another superblock field, fs_providersize, used
only for this purpose. The geom_label(4) will attach if either fs_size
(filesystem created with newfs(8)) or fs_providersize (filesystem expanded
using growfs(8)) matches the device size.

PR: kern/165962
Reviewed by: mckusick
Sponsored by: FreeBSD Foundation


241013 27-Sep-2012 mdf

Fix sbin/ build with a 64-bit ino_t.

Original code by: Gleb Kurtsou


238204 07-Jul-2012 eadler

Remove unneeded variable reported by gcc46 which stopped being used in
r234178.

Approved by: cperciva
MFC after: 3 days


235336 12-May-2012 joel

mdoc: remove redundant paragraph macro.


235079 06-May-2012 trasz

Fix offset calculation to actually rewrite the _last_ block.


234846 30-Apr-2012 trasz

Improve growfs(8) in a few ways; unfortunately, it's somewhat hard to untangle
them and commit separately.

1. Rewrite the way growfs(8) finds the device and mount point. This makes
it possible to use e.g. "growfs /mnt"; it's also used to display more
helpful messages.

2. Be more user-friendly, using descriptive messages, like this:

OK to grow filesystem on /dev/md0, mounted on /mnt, from 9.8GB to 20GB? [Yes/No]"

3. Allow to specify the size (-s option) just like with mdconfig(8), i.e. with
postfixes ("mdconfig -s 10g").

4. Reload read-only filesystem after growing.

Reviewed by: kib, mckusick (earlier version)
Sponsored by: The FreeBSD Foundation


234420 18-Apr-2012 trasz

Style.


234314 15-Apr-2012 trasz

Style.


234312 15-Apr-2012 trasz

Remove FSIRAND and FSMAXSWAP ifdefs, removing code unconditionally.

Reviewed by: kib, mckusick
Sponsored by: The FreeBSD Foundation


234189 12-Apr-2012 trasz

Style.


234178 12-Apr-2012 trasz

Remove block reallocation used to make room for the cylinder group
summary structure. From now on, when there is no room for it,
we simply allocate new one in a newly added cylinder group.

This patch removes a conditional in updcsloc(), reindents some code
there, and removes unused routines. I decided to do it this way instead
of disabling reallocation when the filesystem is live and leaving it
as it is otherwise, because this allows for removal of lots of complicated
and hard to test code. Also, conditionally disabling it would result
in a different layout in filesystems resized online and offline, which
would look somewhat weird.

Reviewed by: mckusick
No objections from: kib
Sponsored by: The FreeBSD Foundation


233656 29-Mar-2012 trasz

Remove disklabel handling code from growfs. This should be done
via geom_part(4), and it doesn't belong in growfs anyway.

Reviewed by: kib, mckusick
Sponsored by: The FreeBSD Foundation


232858 12-Mar-2012 dim

After r232548, clang complains about the apparent '=-' operator (a
left-over from ancient C times, and a frequent typo) in growfs.c:

sbin/growfs/growfs.c:1550:8: error: use of unary operator that may be intended as compound assignment (-=) [-Werror]
blkno =- 1;
^~

Use 'blkno = -1' instead, to silence the error.


232548 05-Mar-2012 trasz

Make growfs(8) mostly style compliant. No functional changes,
verified with MD5.


230289 17-Jan-2012 ed

Allow growfs to be built with GCC 4.7 and -Werror.

The dp1 variable is only used when FSIRAND is defined. Just place the
variable behind #ifdefs entirely.


227081 04-Nov-2011 ed

Add missing static keywords for global variables to tools in sbin/.

These tools declare global variables without using the static keyword,
even though their use is limited to a single C-file, or without placing
an extern declaration of them in the proper header file.


223652 28-Jun-2011 trasz

Revert the mechanical change from 'file system' to 'filesystem', committed
in r223429. As bde@ pointed out, it was mostly backwards.


223429 22-Jun-2011 trasz

Cosmetic fixes; mostly s/file system/filesystem/g and removing weird indent
from messages.


221659 08-May-2011 gavin

We now have multiple filesystems (UFS, ZFS, ...), so for tools that only
operate on one type of filesystem, mention this.
While here, capitalise the use of "UFS" in growfs.8 to match other uses of
the term in other man pages.

MFC after: 1 week


218965 23-Feb-2011 brucec

Fix typos - remove duplicate "is".

PR: docs/154934
Submitted by: Eitan Adler <lists at eitanadler.com>
MFC after: 3 days


217726 22-Jan-2011 marcel

s/utime/modtime/g -- utime shadows utime(3).

Submitted by: Garrett Cooper


215704 22-Nov-2010 brucec

Fix some more warnings found by clang.


212886 20-Sep-2010 marcel

Unbreak the build on strong-aligned architectures (arm, ia64).
Casting from (char *) to (struct ufs1_dinode *) changes the
alignment requirement of the pointer and GCC does not know that
the pointer is adequately aligned (due to malloc(3)), and warns
about it. Cast to (void *) first to by-pass the check.


212839 19-Sep-2010 brian

Revise r197763 which fixes filesystem corruption when extending
into un-zeroed storage.

The original patch was questioned by Kirk as it forces the filesystem
to do excessive work initialising inodes on first use, and was never
MFC'd. This change mimics the newfs(8) approach of zeroing two
blocks of inodes for each new cylinder group.

Reviewed by: mckusick
MFC after: 3 weeks


203835 13-Feb-2010 gavin

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


203770 11-Feb-2010 mckusick

Quiet spurious warnings.


201401 02-Jan-2010 gavin

Remove dead code. This section of code is only run in the
(sblock.fs_magic == FS_UFS1_MAGIC) case, so the check within the
loop is redundant.

Submitted by: Nate Eldredge nge cs.hmc.edu
Reviewed by: mjacob
Approved by: ed (mentor)
MFC after: 1 month


198236 19-Oct-2009 ru

Switch the default WARNS level for sbin/ to 6.

Submitted by: Ulrich Spörlein


197763 05-Oct-2009 mjacob

The cylinder group tag cg_initediblk needs to match the number of inodes
actually initialized. In the growfs case for UFS2, no inodes were actually
being initialized and the number of inodes noted as initialized was the
number of inodes per group. This created a filesystem that was deemed
corrupted because the inodes thus added were full of garbage.

MFC after: 1 month


174706 17-Dec-2007 das

Fix an int overflow on very large file systems.

PR: bin/113399
Submitted by: Staffan Ulfberg <staffan@ulfberg.se>


163844 31-Oct-2006 pjd

Teach about new fields (cg_unrefs and fs_unrefs) and new FS_GJOURNAL flag.

Sponsored by: home.pl


160446 17-Jul-2006 stefanf

Remove duplicated assignment.


144362 31-Mar-2005 rwatson

Don't define FS_DEBUG by default, as this causes growfs to write debugging
information to /tmp/growfs.debug, which is a world-writable directory.

MFC after: 3 days
Reported by: Jon Passki <cykyc@yahoo.com>


140415 18-Jan-2005 ru

Sort sections.


140351 16-Jan-2005 charnier

Remove \n at the end of err(3) strings


139322 26-Dec-2004 jkoshy

Cross-reference ffsinfo(8).


136910 24-Oct-2004 ru

For variables that are only checked with defined(), don't provide
any fake value.


136289 09-Oct-2004 scottl

3 important fixes for growfs:

1) ginode() is passed a cylinder group number and inode number. The inode
number is relative to the cg. Use this relative number rather than the
absolute inode number when searching the cg inode bitmap to see if the inode
is allocated. Using the absolute number quickly runs the check off the end
of the array and causes invalid inodes to be referenced.

2) ginode() checks the absolute indoe number to make sure that it is greater
than ROOTINO. However, the caller loops through all of the possible inode
numbers and directly passes in values that are < ROOTINO. Instead of halting
the program with an error, just return NULL.

3) When allocating new cylinder groups, growfs was initializing all of the
inodes in the group regardless of this only being required for UFS1. Not
doing this for UFS2 provides a significant performance increase.

These fixes allow growing a filesystem beyond a trivial amount and have
been tested to grow an 8GB filesystem to 1.9TB. Much more testing would
be appreciated.

Obtained from: Sandvine, Inc.


132832 29-Jul-2004 le

Catch up with recent gcc changes and introduce a DIP_SET macro
to use when setting values that depend on the UFS version.
Raise WARNS again.


132763 28-Jul-2004 kan

Downgrade WARNS level until GCC 3.4.2 warning are fixed.


131720 06-Jul-2004 stefanf

Parenthesised string literals are invalid in initialisers for character arrays.
Use braces instead.


127821 04-Apr-2004 bde

Include <time.h> instead of depending on namespace pollution in <sys/stat.h>
for the declaration of time().


127819 03-Apr-2004 mux

It seems growfs(8) is now WARNS?=6 safe.

Tested on: alpha, i386, ia64, sparc64


127818 03-Apr-2004 mux

Fix the remaining warnings of growfs(8) on my sparc64 box with
WARNS=6. I don't change the WARNS level in the Makefile because I
didn't tested this on other archs.

The fs.h fix was suggested by: marcel
Reviewed by: md5(1)


127816 03-Apr-2004 mux

- Don't abuse caddr_t when what we really want is a void *.
- Use the %jd format and a cast to intmax_t to print an int64_t.
- The return type of getopt() is an int, not a char.

This fixes some warnings but there's still much more work to do here.


127814 03-Apr-2004 le

Temporarily go back to WARNS=0 until I can figure out what's breaking
the {powerpc, sparc64, ia64} tinderboxes.

Sorry for the noise. :-(


127798 03-Apr-2004 le

Make growfs WARNS=6 clean.

Approved by: grog (mentor)


127729 01-Apr-2004 johan

Remove these MAINTAINER lines since the maintainers has had their
commit bits retired for safe keeping.


127469 26-Mar-2004 le

Don't read an inode which isn't used to avoid problems on UFS2 where not
all inodes are initialized when running newfs.

Approved by: grog (mentor)


124876 23-Jan-2004 blackend

Fix bogus "ffsinfo -c 0" example with "ffsinfo -g 0 -l 4".

PR: bin/61472
Submitted by: Alex Popa <razor@ldc.ro>
MFC after: 1 week


123868 26-Dec-2003 trhodes

Remove another instance of 'disklabel' which eluded me last time.

Noticed by: Andre Guibert de Bruet <andy@siliconlandmark.com> (via -doc)


123774 23-Dec-2003 trhodes

s/disklabel/bsdlabel

Submitted by: Andre Guibert de Bruet <andy@siliconlandmark.com> (via -doc)


121724 30-Oct-2003 trhodes

Remove a few unused variables.


118915 14-Aug-2003 rwatson

Commit 1 of 2 to fix ffsinfo(8) for UFS2.

Add support for UFS2 to the UFS debugging routines in growfs; required
to update ffsinfo(8) for UFS2. A variety of types and fs variables are
renamed to reflect UFS1/2 structures. Also, the print routines for
inodes are now split into separate UFS1 and UFS2 versions. We now
define dbg_dump_csum_total(), but lose the printing of rotational
information since that's not present in UFS2. In the future, we may
want to re-add this functionality to print it solely for UFS1.

Submitted by: Lukas Ertl <l.ertl@univie.ac.at>
PR: bin/53517


116499 17-Jun-2003 brueffer

Remove references to ffsinfo(8) for now. It was disconnected from
the build almost a year ago.


116224 11-Jun-2003 obrien

style clean.


114936 12-May-2003 grog

Understand GEOM. This makes growfs work again, but it really needs rewriting.

Submitted by: Lukas Ertl <l.ertl@univie.ac.at>
Approved by: re (scottl)


114067 26-Apr-2003 schweikh

Fix typos in comments; some style(9) fixes; no code changes.

PR: misc/50979
Submitted by: Lukas Ertl <l.ertl@univie.ac.at>


108470 30-Dec-2002 schweikh

Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.


107788 12-Dec-2002 ru

Uniformly refer to a file system as "file system".

Approved by: re


107294 27-Nov-2002 mckusick

Create a new 32-bit fs_flags word in the superblock. Add code to move
the old 8-bit fs_old_flags to the new location the first time that the
filesystem is mounted by a new kernel. One of the unused flags in
fs_old_flags is used to indicate that the flags have been moved.
Leave the fs_old_flags word intact so that it will work properly if
used on an old kernel.

Change the fs_sblockloc superblock location field to be in units
of bytes instead of in units of filesystem fragments. The old units
did not work properly when the fragment size exceeeded the superblock
size (8192). Update old fs_sblockloc values at the same time that
the flags are moved.

Suggested by: BOUWSMA Barry <freebsd-misuser@netscum.dyndns.dk>
Sponsored by: DARPA & NAI Labs.


107129 21-Nov-2002 keramida

Typo fix that I brought in rev 1.16


103949 25-Sep-2002 mike

Use the standardized CHAR_BIT constant instead of NBBY in userland.


102562 29-Aug-2002 keramida

Mention that fdisk(8) should be used to grow the containing slice
before growing partitions with growfs(8), if necessary.

PR: docs/42148
Submitted by: Chris S.J. Peron <maneo@bsdpro.com>


102231 21-Aug-2002 trhodes

s/filesystem/file system/g as discussed on -developers


101810 13-Aug-2002 ru

can not -> cannot.


99501 06-Jul-2002 charnier

The .Nm utility


98542 21-Jun-2002 mckusick

This commit adds basic support for the UFS2 filesystem. The UFS2
filesystem expands the inode to 256 bytes to make space for 64-bit
block pointers. It also adds a file-creation time field, an ability
to use jumbo blocks per inode to allow extent like pointer density,
and space for extended attributes (up to twice the filesystem block
size worth of attributes, e.g., on a 16K filesystem, there is space
for 32K of attributes). UFS2 fully supports and runs existing UFS1
filesystems. New filesystems built using newfs can be built in either
UFS1 or UFS2 format using the -O option. In this commit UFS1 is
the default format, so if you want to build UFS2 format filesystems,
you must specify -O 2. This default will be changed to UFS2 when
UFS2 proves itself to be stable. In this commit the boot code for
reading UFS2 filesystems is not compiled (see /sys/boot/common/ufsread.c)
as there is insufficient space in the boot block. Once the size of the
boot block is increased, this code can be defined.

Things to note: the definition of SBSIZE has changed to SBLOCKSIZE.
The header file <ufs/ufs/dinode.h> must be included before
<ufs/ffs/fs.h> so as to get the definitions of ufs2_daddr_t and
ufs_lbn_t.

Still TODO:
Verify that the first level bootstraps work for all the architectures.
Convert the utility ffsinfo to understand UFS2 and test growfs.
Add support for the extended attribute storage. Update soft updates
to ensure integrity of extended attribute storage. Switch the
current extended attribute interfaces to use the extended attribute
storage. Add the extent like functionality (framework is there,
but is currently never used).

Sponsored by: DARPA & NAI Labs.
Reviewed by: Poul-Henning Kamp <phk@freebsd.org>


96707 16-May-2002 trhodes

more file system > filesystem


92806 20-Mar-2002 obrien

Remove 'register' keyword.
It does not help modern compilers, and some may take some hit from it.
(I also found several functions that listed *every* of its 10 local vars with
"register" -- just how many free registers do people think machines have?)


92743 20-Mar-2002 rwatson

Teach growfs's dbg_open() that a filename of "-" for output means to
open "/dev/stdout". This doesn't actually affect growfs, but does affect
ffsinfo, permitting ffsinfo to output to the shell's stdout rather than
requiring it be dumped to a file or explicitly pointed at a special
device.

Reviewed by: peter


90639 14-Feb-2002 keramida

Typo fix: Usally -> Usually.

PR: docs/34918
Submitted by: Harry Newton <harry_newton@telinco.co.uk>


90326 06-Feb-2002 markm

Minor grammar fixes.


87325 04-Dec-2001 obrien

Default to WARNS=2.
Binary builds that cannot handle this must explicitly set WARNS=0.

Reviewed by: mike


81586 13-Aug-2001 ru

Removed duplicate VCS ID tags, as per style(9).


81418 10-Aug-2001 ru

mdoc(7) police: spelling, punctuation and markup nits.


81311 08-Aug-2001 chm

fixing a bug in test mode (growfs -N)

Submitted by: Chris Boltwood <chris@hiendmedia.com>
Reviewed by: tomsoft
MFC after: 5 days


80898 01-Aug-2001 sheldonh

MFS: in HISTORY section, fix release number of first appearance


79754 15-Jul-2001 dd

Remove whitespace at EOL.


79454 09-Jul-2001 dd

mdoc(7) police: remove extraneous .Pp before and/or after .Sh.


77885 07-Jun-2001 tomsoft

cleanup to get rid of most warnings on alpha
and yes now it also works on alpha

Reviewed by: chm
MFC after: 3 weeks


77779 05-Jun-2001 tomsoft

fix a bug of a only partitally initialization which could result
in an unclean filesystem after growing by a large amount of cylinder
groups

Reviewed by: chm


74815 26-Mar-2001 ru

- Backout botched attempt to introduce MANSECT feature.
- MAN[1-9] -> MAN.


74531 20-Mar-2001 ru

Set the default manual section for sbin/ to 8.


69999 13-Dec-2000 tomsoft

Fix a logical bug introduced by changing the formatting.

Submitted by: ru
Reviewed by: chm


69977 13-Dec-2000 ru

Mdoc(7)ify.


69926 12-Dec-2000 tomsoft

corrected spelling mistakes in comments
check a couple of mallocs
usage of errx
linebreaks of DBG_ macros,
correcting the usage of nroff macros

Submitted by: grog, charnier
Reviewed by: chm


69800 09-Dec-2000 tomsoft

added growfs(8) including ffsinfo(8) to the freebsd base system

Reviewed by: grog