Home | History | Annotate | Download | only in quotacheck
History log of /src/usr.sbin/quotacheck/quotacheck.c
RevisionDateAuthorComments
 1.51  07-Jan-2023  chs ufs: fixed signed/unsigned bugs affecting large file systems

Apply these commits from FreeBSD:

commit e870d1e6f97cc73308c11c40684b775bcfa906a2
Author: Kirk McKusick <mckusick@FreeBSD.org>
Date: Wed Feb 10 20:10:35 2010 +0000

This fix corrects a problem in the file system that treats large
inode numbers as negative rather than unsigned. For a default
(16K block) file system, this bug began to show up at a file system
size above about 16Tb.

To fully handle this problem, newfs must be updated to ensure that
it will never create a filesystem with more than 2^32 inodes. That
patch will be forthcoming soon.

Reported by: Scott Burns, John Kilburg, Bruce Evans
Followup by: Jeff Roberson
PR: 133980
MFC after: 2 weeks

commit 81479e688b0f643ffacd3f335b4b4bba460b769d
Author: Kirk McKusick <mckusick@FreeBSD.org>
Date: Thu Feb 11 18:14:53 2010 +0000

One last pass to get all the unsigned comparisons correct.


In additional to the changes from FreeBSD, this commit includes quite a few
related changes to appease -Wsign-compare.
 1.50  17-Nov-2022  chs branches: 1.50.2;
Restore backward compatibility of UFS2 with previous NetBSD releases by
disabling support in UFS2 for extended attributes (including ACLs).
Add a new variant of UFS2 called "UFS2ea" that does support extended attributes.
Add new fsck_ffs operations "-c ea" and "-c no-ea" to convert file systems
from UFS2 to UFS2ea and vice-versa (both of which delete all existing extended
attributes in the process).
 1.49  16-Jun-2015  christos improve error messages (remove \n, use __func__, etc)
 1.48  23-Jun-2013  dholland Stick ffs_, ext2_, chfs_, filecore_, cd9660_, or mfs_ in front of
the following symbols so as to disambiguate fully. (Christos already
did the lfs ones.)

lblkno
lblktosize
lfragtosize
numfrags
blkroundup
fragroundup
 1.47  23-Jun-2013  dholland fsbtodb() -> FFS_FSBTODB(), EXT2_FSBTODB(), or MFS_FSBTODB()
dbtofsb() -> FFS_DBTOFSB() or EXT2_DBTOFSB()

(Christos already did the lfs ones a few days back)
 1.46  22-Jan-2013  dholland Stuff UFS_ in front of a few of ufs's symbols to reduce namespace
pollution. Specifically:
ROOTINO -> UFS_ROOTINO
WINO -> UFS_WINO
NXADDR -> UFS_NXADDR
NDADDR -> UFS_NDADDR
NIADDR -> UFS_NIADDR
MAXSYMLINKLEN -> UFS_MAXSYMLINKLEN
MAXSYMLINKLEN_UFS[12] -> UFS[12]_MAXSYMLINKLEN (for consistency)

Sort out ext2fs's misuse of NDADDR and NIADDR; fortunately, these have
the same values in ext2fs and ffs.

No functional change intended.
 1.45  07-Apr-2012  christos branches: 1.45.2;
use getfsspecname()
 1.44  06-Mar-2011  christos branches: 1.44.4;
more code deduplication
 1.43  06-Mar-2011  christos more KNF
 1.42  06-Mar-2011  christos use merged out code.
 1.41  06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.40  09-Oct-2008  christos branches: 1.40.14;
PR/39719: Edgar Fu: block/inode typo in quotacheck(8)
 1.39  21-Jul-2008  lukem Remove the \n and tabs from the __COPYRIGHT() strings.
Tweak to use a consistent format.
 1.38  15-Feb-2007  christos branches: 1.38.12;
From Edgar: fix ino computation; allocate space for the superblock after
we know how big it is.
 1.37  19-Aug-2005  christos branches: 1.37.4;
64 bit inode changes
 1.36  12-Dec-2004  christos PR/23971: Greg A. Woods: Fix quotacheck infinite loop with uid == UINT32_MAX.
While I am there, pass WARNS=3
 1.35  27-Mar-2004  dsl fffv2 might not have FS_FLAGS_UPDATED set
 1.34  21-Mar-2004  dsl When searching for the superblock, don't pick an ffsv1 superblock from the
location where we expect to find an ffsv2 superblock.
It could be the first alternate for a ffsv1 filesystem with 64k blocks.
Fixes part of PR kern/24809
 1.33  05-Jan-2004  jmmv Homogenize usage messages: make the 'usage' word all lowercase, as this seems
to be the most common practice in our tree.
 1.32  05-Jan-2004  wiz Add -l to usage.
 1.31  05-Jan-2004  christos don't allow -l without -a
 1.30  05-Jan-2004  wiz Add -q to usage.
 1.29  05-Jan-2004  christos PR/23971: Robert Elz: Quotacheck fails when max uid is present and takes
forever if there are large gaps in the uid space. It also does not work
properly with the fsck preen code it uses.
 1.28  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22366, verified by myself.
 1.27  13-Jul-2003  itojun use bounded string op
 1.26  17-Apr-2003  fvdl Skip over inodes <= ROOTINO for getnextinode(). PR 21208 by Geoff Wing.
 1.25  02-Apr-2003  fvdl Add support for UFS2. UFS2 is an enhanced FFS, adding support for
64 bit block pointers, extended attribute storage, and a few
other things.

This commit does not yet include the code to manipulate the extended
storage (for e.g. ACLs), this will be done later.

Originally written by Kirk McKusick and Network Associates Laboratories for
FreeBSD.
 1.24  24-Jan-2003  fvdl Bump daddr_t to 64 bits. Replace it with int32_t in all places where
it was used on-disk, so that on-disk formats remain the same.
Remove ufs_daddr_t and ufs_lbn_t for the time being.
 1.23  10-Dec-2002  bouyer Add SIGINFO support.
 1.22  17-Aug-2001  lukem branches: 1.22.2;
remove third argument (`int ns') from ffs_sb_swap(), and let ffs_sb_swap()
determine the endianness of the `struct fs *o' superblock from o->fs_magic
and set needswap as necessary, rather than trusting the caller to get
it right. invariably, almost every caller of ffs_sb_swap() was calling it
with ns set to the wrong value for ns anyway!
ansi KNF ffs_bswap.c declarations whilst here.

this fixes all sorts of problems when trying to use other-endian file systems,
notably the kernel trying to access memory *way* off, possibly corrupting or
panicing, and userland programs SEGVing and/or corrupting things (e.g,
"fsck_ffs -B" to swap a file system endianness).

whilst the previous rev of ffs_bswap.c (1.10, 2000/12/23) made this problem
worse, i suspect that the problem was always there and previous versions
just happened not to trash things at the wrong time.

FFS_EI should now be a lot more stable.
 1.21  19-Feb-2001  cgd convert to use getprogname()
 1.20  30-Mar-1999  abs branches: 1.20.10;
If -a, we do not want to pay the cost of processing every group and password
entry if there are no filesystems with quotas. Speeds up boot on a large YP
site without quotas considerably. If a filesystem has quotas we process
/etc/fstab twice, which is very cheap in relative terms.
 1.19  27-Aug-1998  ross {} fixes from Erik Bertelsen <erik@erik-be.uni-c.dk> (PR 6047) to shut up egcs.
 1.18  27-Jul-1998  mycroft const poisoning.
 1.17  18-Mar-1998  bouyer Add support for non-native byteorder FFS.
The quota file is still in host byteorder. quotacheck needs to be re-run
when a FS has been moved to an architecture to another. Running quota
on a non-native byteorder ffs is considered a marginal case.
 1.16  19-Sep-1997  christos Fix uninitialized variable
 1.15  16-Sep-1997  lukem * resolve conflicts from lite-2 merge
* cleanup for WARNS=1
 1.14  28-Sep-1996  christos Update for newer preen interface.
 1.13  27-Sep-1996  christos This broke when preen.c moved from fsck_ffs to fsck. Update and cleanup.
 1.12  30-Mar-1996  mark Use an integer instead of a char for the getopt() return value in order
to work with compilers that use unsigned chars.
Compare the getopt() return value with -1 instead of EOF.
 1.11  28-Nov-1995  jtc merge in changes from 1.1 release branch
 1.10  18-Mar-1995  cgd branches: 1.10.2;
convert to new RCS Id conventions; reduce my headache
 1.9  03-Jan-1995  cgd <sys/queue.h> is no longer needed.
 1.8  18-Dec-1994  cgd compile against new headers
 1.7  23-Sep-1994  mycroft Eliminate uses of some obsolete functions.
 1.6  16-Aug-1994  mycroft Fix an obvious bogon when checking multiple file systems, and use the libc
version of err(3).
 1.5  08-Jun-1994  mycroft branches: 1.5.2;
Update from 4.4-Lite, with local changes.
 1.4  26-May-1994  cgd pass a daddr_t rather than an off_t; forgot to commit last week.
 1.3  01-Aug-1993  mycroft Add RCS identifiers.
 1.2  07-May-1993  cgd fixe for uninitialized variables, from 386bsd patchkit patch #111
 1.1  09-Apr-1993  cgd branches: 1.1.1;
ported from Net/2. (patch 111)
 1.1.1.2  16-Sep-1997  lukem imported from lite-2
 1.1.1.1  13-Jun-1994  mycroft Import 4.4-Lite version.
 1.5.2.1  16-Aug-1994  mycroft update from trunk
 1.10.2.1  01-Nov-1995  jtc Complete change from ufs -> ffs; (From Tatoku Ogaito; PR #1679)
 1.20.10.1  25-Nov-2001  he Pull up revision 1.22 (requested by lukem):
Call ffs_sb_swap() with the correct arguments. Fixes problems
with using other-endian file systems.
 1.22.2.1  26-Jan-2003  jmc Pull up versions 1.22-1.23 (requested by bouyer in ticket #1070)
Add SIGINFO support.
 1.37.4.1  12-Apr-2007  bouyer Pull up following revision(s) (requested by jdc in ticket #562):
usr.sbin/quotacheck/quotacheck.c: revision 1.38
From Edgar: fix ino computation; allocate space for the superblock after
we know how big it is.
 1.38.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.40.14.1  09-Feb-2011  bouyer Make it build in new world.
Don't attempt to update in-kernel quota, but instead warn if quotas
are already on. The rc.d script runs quotacheck before quotaon
so this shouldn't be a problem.
 1.44.4.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.44.4.2  23-Jan-2013  yamt sync with head
 1.44.4.1  17-Apr-2012  yamt sync with head
 1.45.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.45.2.1  25-Feb-2013  tls resync with head
 1.50.2.1  13-May-2023  martin Pull up following revision(s) (requested by chs in ticket #160):

usr.sbin/makefs/ffs/ffs_alloc.c: revision 1.31
sbin/tunefs/tunefs.c: revision 1.58
sbin/fsck_ffs/setup.c: revision 1.105
sbin/fsck_ffs/pass5.c: revision 1.56
usr.sbin/makefs/ffs.c: revision 1.74
usr.sbin/makefs/ffs/mkfs.c: revision 1.42
usr.sbin/makefs/Makefile: revision 1.40
sys/ufs/ffs/fs.h: revision 1.71
sbin/fsdb/fsdb.c: revision 1.54
sbin/resize_ffs/resize_ffs.c: revision 1.58
sbin/fsck_ffs/pass4.c: revision 1.29
usr.sbin/makefs/ffs/ffs_extern.h: revision 1.9
sbin/newfs/mkfs.c: revision 1.133
sys/ufs/ffs/ffs_alloc.c: revision 1.172
sbin/fsck_ffs/pass1b.c: revision 1.24
usr.sbin/dumpfs/dumpfs.c: revision 1.68
sys/ufs/ffs/ffs_extern.h: revision 1.88
usr.sbin/quotacheck/quotacheck.c: revision 1.51
sys/ufs/ffs/ffs_subr.c: revision 1.54
sbin/fsck_ffs/main.c: revision 1.91
sbin/fsck_ffs/pass1.c: revision 1.63

ufs: fixed signed/unsigned bugs affecting large file systems

Apply these commits from FreeBSD:
commit e870d1e6f97cc73308c11c40684b775bcfa906a2
Author: Kirk McKusick <mckusick@FreeBSD.org>
Date: Wed Feb 10 20:10:35 2010 +0000
This fix corrects a problem in the file system that treats large
inode numbers as negative rather than unsigned. For a default
(16K block) file system, this bug began to show up at a file system
size above about 16Tb.
To fully handle this problem, newfs must be updated to ensure that
it will never create a filesystem with more than 2^32 inodes. That
patch will be forthcoming soon.
Reported by: Scott Burns, John Kilburg, Bruce Evans
Followup by: Jeff Roberson
PR: 133980
MFC after: 2 weeks

commit 81479e688b0f643ffacd3f335b4b4bba460b769d
Author: Kirk McKusick <mckusick@FreeBSD.org>
Date: Thu Feb 11 18:14:53 2010 +0000
One last pass to get all the unsigned comparisons correct.

In additional to the changes from FreeBSD, this commit includes quite a few
related changes to appease -Wsign-compare.

RSS XML Feed