summaryrefslogtreecommitdiffstats
path: root/sbin/growfs/growfs.c
Commit message (Collapse)AuthorAgeFilesLines
* Use MIN() macro from sys/param.h.araujo2016-05-021-2/+1
| | | | | | Reviewed by: trasz MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D6119
* Use NULL instead of 0 for pointers.araujo2016-04-181-1/+1
| | | | | | | strchr(3) will return NULL if the character does not appear in the string. MFC after: 2 weeks.
* Fix growfs(8) build with debug enabled (make -DGFSDBG).trasz2015-04-241-2/+2
| | | | | | | PR: 199641 Submitted by: Willem Jan Withagen <wjw at digiware dot nl> MFC after: 1 month Sponsored by: The FreeBSD Foundation
* Refer newfs and growfs users to fsck_ffs instead ofbrueffer2014-02-091-1/+1
| | | | | | | | | | | fsck, the latter does not accept the referred to "-b" flag. This change was accidently committed directly to 9-STABLE in r237505. PR: 82720 Submitted by: David D.W. Downey MFC after: 1 week
* Allow the use of lowercase 'yes'eadler2013-05-081-1/+1
| | | | | PR: bin/178422 Submitted by: Garrett Cooper <yaneurabeya@gmail.com>
* Use arc4random() instead of random().delphij2013-04-151-6/+1
| | | | MFC after: 2 weeks
* When growing a filesystem, don't leave unused space at the endtrasz2012-12-161-7/+10
| | | | | | if there is not enough room for a full cylinder group. Reviewed by: mckusick@
* Fix extending filesystems of weird size by making sure the actual sizetrasz2012-12-151-0/+6
| | | | is always multiple of fragment size.
* Make it possible to resize filesystems mounted read-write, using newlytrasz2012-11-181-7/+23
| | | | | | | introduced UFS write suspension mechanism. Reviewed by: kib, mckusick Sponsored by: FreeBSD Foundation
* Fix problem with geom_label(4) not recognizing UFS labels on filesystemstrasz2012-10-301-0/+1
| | | | | | | | | | | | | | | | | | 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
* Fix sbin/ build with a 64-bit ino_t.mdf2012-09-271-2/+3
| | | | Original code by: Gleb Kurtsou
* Remove unneeded variable reported by gcc46 which stopped being used ineadler2012-07-071-3/+0
| | | | | | | r234178. Approved by: cperciva MFC after: 3 days
* Fix offset calculation to actually rewrite the _last_ block.trasz2012-05-061-2/+2
|
* Improve growfs(8) in a few ways; unfortunately, it's somewhat hard to untangletrasz2012-04-301-102/+237
| | | | | | | | | | | | | | | | | | | | 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
* Style.trasz2012-04-181-2/+2
|
* Style.trasz2012-04-151-5/+5
|
* Remove FSIRAND and FSMAXSWAP ifdefs, removing code unconditionally.trasz2012-04-151-16/+1
| | | | | Reviewed by: kib, mckusick Sponsored by: The FreeBSD Foundation
* Style.trasz2012-04-121-10/+7
|
* Remove block reallocation used to make room for the cylinder grouptrasz2012-04-121-854/+165
| | | | | | | | | | | | | | | | | 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
* Remove disklabel handling code from growfs. This should be donetrasz2012-03-291-105/+9
| | | | | | | via geom_part(4), and it doesn't belong in growfs anyway. Reviewed by: kib, mckusick Sponsored by: The FreeBSD Foundation
* After r232548, clang complains about the apparent '=-' operator (adim2012-03-121-1/+1
| | | | | | | | | | 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.
* Make growfs(8) mostly style compliant. No functional changes,trasz2012-03-051-505/+378
| | | | verified with MD5.
* Allow growfs to be built with GCC 4.7 and -Werror.ed2012-01-171-1/+3
| | | | | The dp1 variable is only used when FSIRAND is defined. Just place the variable behind #ifdefs entirely.
* Add missing static keywords for global variables to tools in sbin/.ed2011-11-041-1/+1
| | | | | | 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.
* Revert the mechanical change from 'file system' to 'filesystem', committedtrasz2011-06-281-22/+22
| | | | in r223429. As bde@ pointed out, it was mostly backwards.
* Cosmetic fixes; mostly s/file system/filesystem/g and removing weird indenttrasz2011-06-221-25/+25
| | | | from messages.
* Fix typos - remove duplicate "is".brucec2011-02-231-1/+1
| | | | | | PR: docs/154934 Submitted by: Eitan Adler <lists at eitanadler.com> MFC after: 3 days
* s/utime/modtime/g -- utime shadows utime(3).marcel2011-01-221-12/+12
| | | | Submitted by: Garrett Cooper
* Unbreak the build on strong-aligned architectures (arm, ia64).marcel2010-09-201-1/+1
| | | | | | | 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.
* Revise r197763 which fixes filesystem corruption when extendingbrian2010-09-191-14/+13
| | | | | | | | | | | | 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
* When growing a UFS1 filesystem, we need to initialise all inodes in any newgavin2010-02-131-4/+2
| | | | | | | | | | | | | | | | | | | | | 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
* Quiet spurious warnings.mckusick2010-02-111-8/+8
|
* Remove dead code. This section of code is only run in thegavin2010-01-021-10/+4
| | | | | | | | | | (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
* The cylinder group tag cg_initediblk needs to match the number of inodesmjacob2009-10-051-2/+8
| | | | | | | | | 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
* Fix an int overflow on very large file systems.das2007-12-171-2/+2
| | | | | PR: bin/113399 Submitted by: Staffan Ulfberg <staffan@ulfberg.se>
* Remove duplicated assignment.stefanf2006-07-171-1/+0
|
* Remove \n at the end of err(3) stringscharnier2005-01-161-7/+5
|
* 3 important fixes for growfs:scottl2004-10-091-22/+42
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Catch up with recent gcc changes and introduce a DIP_SET macrole2004-07-291-2/+8
| | | | | to use when setting values that depend on the UFS version. Raise WARNS again.
* Include <time.h> instead of depending on namespace pollution in <sys/stat.h>bde2004-04-041-0/+1
| | | | for the declaration of time().
* Fix the remaining warnings of growfs(8) on my sparc64 box withmux2004-04-031-4/+4
| | | | | | | | 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)
* - Don't abuse caddr_t when what we really want is a void *.mux2004-04-031-4/+5
| | | | | | | - 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.
* Make growfs WARNS=6 clean.le2004-04-031-34/+38
| | | | Approved by: grog (mentor)
* Don't read an inode which isn't used to avoid problems on UFS2 where notle2004-03-261-0/+8
| | | | | | all inodes are initialized when running newfs. Approved by: grog (mentor)
* Remove a few unused variables.trhodes2003-10-301-3/+2
|
* Understand GEOM. This makes growfs work again, but it really needs rewriting.grog2003-05-121-28/+57
| | | | | Submitted by: Lukas Ertl <l.ertl@univie.ac.at> Approved by: re (scottl)
* Fix typos in comments; some style(9) fixes; no code changes.schweikh2003-04-261-121/+117
| | | | | PR: misc/50979 Submitted by: Lukas Ertl <l.ertl@univie.ac.at>
* Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/schweikh2002-12-301-1/+1
| | | | Add FreeBSD Id tag where missing.
* Create a new 32-bit fs_flags word in the superblock. Add code to movemckusick2002-11-271-2/+1
| | | | | | | | | | | | | | | | | 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.
* Use the standardized CHAR_BIT constant instead of NBBY in userland.mike2002-09-251-4/+5
|
OpenPOWER on IntegriCloud