| History log of /src/sbin/fsck_ffs/fsck.h |
| Revision | | Date | Author | Comments |
| 1.59 |
| 04-Mar-2025 |
andvar | s/ownerchip/ownership/ in comment.
|
| 1.58 |
| 04-Jul-2023 |
riastradh | branches: 1.58.2; fsck_ffs(8): Fix whitespace issues.
- Nix trailing whitespace. - Omit excessive blank lines. - Insert missing blank lines between $NetBSD$ and copyright.
No functional change intended.
|
| 1.57 |
| 14-Jan-2023 |
christos | catch up with sign changes in the fs.h
|
| 1.56 |
| 17-Nov-2022 |
chs | branches: 1.56.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.55 |
| 18-Apr-2020 |
jdolecek | add NO_IOBUF_ALIGNED to not pull aligned_alloc() for really constrained boot media
|
| 1.54 |
| 05-Apr-2020 |
joerg | Fix depenency on common symbols in sbin.
|
| 1.53 |
| 05-May-2019 |
christos | Add a -z flag to zero out the up to 4 bytes of padding in directory entry names (including the terminating NUL), as well as directory entries with extra free space (d->d_reclen > UFS_DIRSIZ(d)).
Inspired from FreeBSD: https://svnweb.freebsd.org/base?view=revision&revision=347066
While the kernel has been fixed to deal with the padding bytes (new kernels will correctly zero out all the padding after the name), it appears that there is still an issue with directory entries with extra free space, since a newly created and populated filesystem gets modified with "fsck_ffs -z".
|
| 1.52 |
| 08-Feb-2017 |
rin | branches: 1.52.12; __empty -> __nothing
|
| 1.51 |
| 08-Feb-2017 |
christos | use __empty
|
| 1.50 |
| 08-Feb-2017 |
rin | Add smaller versions of fsck_ffs(8) and newfs(8) for install media, where support for Endian-Independent FFS and Apple UFS is disabled unless FFS_EI=1 and APPLE_UFS=1 are added to CRUNCHENV, respectively.
This reduces the size of ramdisk image for atari by over 15KB.
Thanks tsutsui and christos for their useful comments.
|
| 1.49 |
| 06-Mar-2011 |
bouyer | branches: 1.49.26; 1.49.30; 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.48 |
| 12-Sep-2010 |
drochner | branches: 1.48.2; minimal ansification/constification
|
| 1.47 |
| 09-Oct-2008 |
christos | Disable userid to username lookups by default. Add a -U flag to perform them. In single user mode lookups that involve the network might not work and they slow down fsck.
|
| 1.46 |
| 23-Feb-2008 |
christos | Make sure that the exit values are always sane, and use symbolic instead of magic constants. Reviewed by go@
|
| 1.45 |
| 21-Apr-2006 |
skrll | branches: 1.45.4; 1.45.10; 1.45.18; 1.45.20; Don't use cast expressions as lvalues as newer versions of gcc warn.
|
| 1.44 |
| 24-Dec-2005 |
perry | Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.43 |
| 27-Jun-2005 |
christos | sprinkle const.
|
| 1.42 |
| 19-Jan-2005 |
xtraeme | Kill __P(), ANSIfy and WARNS=2
|
| 1.41 |
| 13-Jan-2005 |
christos | Use -DPROGRESS to enable the progress bar, don't depend on SMALL.
|
| 1.40 |
| 13-Jan-2005 |
christos | Add a progress meter to fsck_ffs based on the work by thorpej presented to the mailing lists last January. This is optional.
|
| 1.39 |
| 20-Jul-2004 |
mycroft | Reduce memory usage slightly.
|
| 1.38 |
| 25-May-2004 |
hannken | Add ffs internal snapshots. Written by Marshall Kirk McKusick for FreeBSD.
- Not enabled by default. Needs kernel option FFS_SNAPSHOT. - Change parameters of ffs_blkfree. - Let the copy-on-write functions return an error so spec_strategy may fail if the copy-on-write fails. - Change genfs_*lock*() to use vp->v_vnlock instead of &vp->v_lock. - Add flag B_METAONLY to VOP_BALLOC to return indirect block buffer. - Add a function ffs_checkfreefile needed for snapshot creation. - Add special handling of snapshot files: Snapshots may not be opened for writing and the attributes are read-only. Use the mtime as the time this snapshot was taken. Deny mtime updates for snapshot files. - Add function transferlockers to transfer any waiting processes from one lock to another. - Add vfsop VFS_SNAPSHOT to take a snapshot and make it accessible through a vnode. - Add snapshot support to ls, fsck_ffs and dump.
Welcome to 2.0F.
Approved by: Jason R. Thorpe <thorpej@netbsd.org>
|
| 1.37 |
| 09-Jan-2004 |
dbj | do not upgrade superblock or set FS_FLAGS_UPDATED unless -c 4 option is provided. add compatibility for filesystems before FFSv2 integration these patches are from pr port-macppc/23925 and should also fix problems discussed in pr kern/21404 and pr kern/21283
|
| 1.36 |
| 20-Oct-2003 |
dsl | Add a -q (quiet) option to print nothing for clean filesystems. Support in fsck_ffs and stub in fsck_xxx. Push a few more messages through pwarn() instead of printf() to ensure disk name is shown.
|
| 1.35 |
| 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22308, verified by myself.
|
| 1.34 |
| 24-Apr-2003 |
fvdl | Oops. The clearinode macro had the UFS2 case reversed, causing it to zero out two inodes in the plain FFS case, since UFS2 dinodes are twice as big.
|
| 1.33 |
| 06-Apr-2003 |
fvdl | Write update some old fields when writing the superblock, similar to ffs_oldfscompat_write() in the kernel. Use the old totals when time < old_time (i.e. an old kernel or fsck wrote the filesystem last). When setting the date back on a new kernel, that works out ok, since new kernels always update both fields.
|
| 1.32 |
| 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.31 |
| 29-Mar-2003 |
wiz | Consistently spell occurrence with two rs.
|
| 1.30 |
| 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.29 |
| 28-Sep-2002 |
dbj | Add support for the Apple UFS variation on ffs This is the bulk of PR #17345
The general approach is to use a run time deteriminable value for DIRBLKSIZ. Additional allowances are included for using MAXSYMLINKLEN with FS_42INODEFMT and a shift in the cylinder group cluster summary count array. Support is added for managing the Apple UFS volume label.
|
| 1.28 |
| 06-May-2002 |
lukem | If SIGINFO is received, display summary information to stderr. Based on changes in FreeBSD, via Chuck Cranor <chuck@research.att.com>
|
| 1.27 |
| 17-Aug-2001 |
lukem | 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.26 |
| 15-Aug-2001 |
lukem | - implement -F; treat provided filesystems as images in regular files - replace "filesystem" with "file system" as appropriate - grammar fixes
|
| 1.25 |
| 15-Aug-2001 |
lukem | minor whitespace cleanup
|
| 1.24 |
| 04-Feb-2001 |
christos | remove redundant declarations
|
| 1.23 |
| 26-Jan-2001 |
thorpej | In pass 5, check alternate superblocks for consistency with the current in-core master superblock, and fix them up if they're incorrect. Move the code that writes the alternate superblocks if (cvtlevel || doswap) into pass 5 for efficiency.
Reviewd by Charles Hannum, and used by me to fix up a curdled file system.
|
| 1.22 |
| 09-Jan-2001 |
mycroft | The reconnect algorithm was historically O(n^4). Some years ago I made it O(n^2). Someone helpfully made it O(n^4) again. Today I'm making it O(n). If that's not good enough, I don't know what else to do. B-)
Technical details: * The graph traversal in propagate() is modified to be able to start from any point in the tree. To handle certain exceptional cases, it is also modified to work in two passes, marking the tree with a special tag and then changing it to DFOUND. * The reconnect case now modifies the child/sibling pointers and calls propagate() to propagate the connection state starting with the reconnected directory.
Pray that you never encounter a file system trashed enough for this to matter.
|
| 1.21 |
| 13-Dec-2000 |
scw | Some more `extern's for initialised globals.
|
| 1.20 |
| 15-Nov-1999 |
fvdl | branches: 1.20.4; Update for softdep code.
|
| 1.19 |
| 15-Jan-1999 |
bouyer | branches: 1.19.4; 1.19.8; #include machine/bswap.h and remove -lutil.
|
| 1.18 |
| 23-Oct-1998 |
thorpej | Use DINODE_SIZE rather than sizeof(struct dinode) and/or pointer arithmetic.
|
| 1.17 |
| 18-Mar-1998 |
bouyer | Add support for non-native byteorder FFS, and converting byteorder. Also, be a bit more conservative with the clean flag: don't mark the FS clean when we know there may still be errors (user anserwed 'n' to a question, or fsck says "you must rerun fsck").
|
| 1.16 |
| 21-Sep-1997 |
lukem | a quad_t is an int64_t, not a u_int64_t...
|
| 1.15 |
| 20-Sep-1997 |
lukem | - don't indiscriminately include <stdlib.h> and <unistd.h> in "fsck.h" - explicitly pull in <stdio.h>, <stdlib.h> and <unistd.h> in *.c as necessary
|
| 1.14 |
| 16-Sep-1997 |
lukem | resolve conflicts from lite-2 merge.
|
| 1.13 |
| 11-Oct-1996 |
thorpej | Bug fix from Kirk McKusick <mckusick@McKusick.COM>:
Fix a bug in fsck_ffs where if a directory somehow develops a hole (that is a block pointer that has a value of zero), fsck would give the filesystem a clean bill of health, but the kernel would panic when accessing the directory with the hole. Fsck now checks for holes in directories. If found in preen mode, fsck fails. In manual mode, it can be directed to shorten the directory to the beginning of the hole. A more complete solution would be to allocate a block to fill the hole. However, this is a lot more work for a `cannot happen' error, so the extra effort seems unwarranted.
|
| 1.12 |
| 23-Sep-1996 |
christos | - fixed all printf formats [there were a lot of %l? <-> %? mistakes] - added missing prototypes, and made local functions static - removed parallel preening code; this is part of fsck(8) - use printing utilities from fsck(8) - Makefile does not make links to fsck and fsck.8 - removed -l maxparallel option. It has no meaning anymore.
|
| 1.11 |
| 11-Jun-1996 |
mycroft | Use a different tree-walking algorithm in propagate().
|
| 1.10 |
| 12-Apr-1995 |
mycroft | branches: 1.10.4; Set the clean flag if necessary. If preening, don't check `clean' file systems.
|
| 1.9 |
| 21-Mar-1995 |
cgd | type sizes
|
| 1.8 |
| 18-Mar-1995 |
cgd | convert to new RCS Id conventions; reduce my headache
|
| 1.7 |
| 05-Dec-1994 |
cgd | more cleanups from Jim Jegers, passed over by me.
|
| 1.6 |
| 08-Jun-1994 |
mycroft | Update from 4.4-Lite, with local changes.
|
| 1.5 |
| 02-May-1994 |
pk | Prototype some things.
|
| 1.4 |
| 01-Aug-1993 |
mycroft | Add RCS identifiers.
|
| 1.3 |
| 23-Mar-1993 |
cgd | changed "Id" to "Header" for rcsids
|
| 1.2 |
| 22-Mar-1993 |
cgd | added rcs ids to all files
|
| 1.1 |
| 21-Mar-1993 |
cgd | branches: 1.1.1; Initial revision
|
| 1.1.1.3 |
| 16-Sep-1997 |
lukem | imported from lite-2
|
| 1.1.1.2 |
| 13-Jun-1994 |
mycroft | Import 4.4-Lite version.
|
| 1.1.1.1 |
| 21-Mar-1993 |
cgd | initial import of 386bsd-0.1 sources
|
| 1.10.4.2 |
| 02-Mar-1997 |
mycroft | Pull up changes from Kirk McKusick to check for holes in directories.
|
| 1.10.4.1 |
| 10-Dec-1996 |
mycroft | From trunk: * Redo the tree-walking algorithm to make it O(n) rather than O(n^2). * Fix some minor type size problems.
|
| 1.19.8.1 |
| 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
| 1.19.4.1 |
| 19-Oct-1999 |
fvdl | Bring in Kirk McKusick's FFS softdep code on a branch.
|
| 1.20.4.2 |
| 25-Nov-2001 |
he | Pull up revision 1.27 (requested by lukem): Call ffs_sb_swap() with the correct arguments. Fixes problems with using other-endian file systems.
|
| 1.20.4.1 |
| 24-Nov-2001 |
he | Pull up revisions 1.21-1.24 (requested by lukem): Jumbo pullup for fsck_ffs: o fix incorrect error message o mark initialized globals with ``extern'' o make reconnect algorithm O(n) instead of O(n^4) o remove dead code o don't swap cg_clustersum(cg)[0], it's a bitmap o ensure rotor values are positive o some code restructuring o fix byte swapping bug o pass5: check alternate superblocks for consistency with in-core master o fix usage message
|
| 1.45.20.2 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
| 1.45.20.1 |
| 03-Apr-2008 |
mjf | Sync with HEAD.
|
| 1.45.18.1 |
| 24-Mar-2008 |
keiichi | sync with head.
|
| 1.45.10.1 |
| 23-Mar-2008 |
matt | sync with HEAD
|
| 1.45.4.1 |
| 24-Mar-2009 |
bouyer | Pull up following revision(s) (requested by manu in ticket #1288): sbin/fsck_lfs/inode.c: revision 1.40 via patch sbin/fsck_ffs/fsck_ffs.8: revision 1.44 via patch sbin/fsck_ext2fs/fsck.h: revision 1.14 via patch sbin/fsck_ext2fs/main.c: revision 1.30 via patch sbin/fsck_ffs/inode.c: revision 1.61 via patch sbin/fsck_ffs/main.c: revision 1.71 via patch sbin/fsck_ext2fs/inode.c: revision 1.23 via patch sbin/fsck_lfs/fsck.h: revision 1.18 via patch sbin/fsck_lfs/fsck_lfs.8: revision 1.21 via patch sbin/fsck_lfs/main.c: revision 1.38 via patch sbin/fsck_ext2fs/fsck_ext2fs.8: revision 1.15 via patch sbin/fsck_ffs/fsck.h: revision 1.47 via patch Disable userid to username lookups by default. Add a -U flag to perform them. In single user mode lookups that involve the network might not work and they slow down fsck.
|
| 1.48.2.1 |
| 20-Jan-2011 |
bouyer | Snapshot of work in progress on a modernised disk quota system: - new quotactl syscall (versionned for backward compat), which takes as parameter a path to a mount point, and a prop_dictionary (in plistref format) describing commands and arguments. For each command, status and data are returned as a prop_dictionary. quota commands features will be added to take advantage of this, exporting quota data or getting quota commands as plists.
- new on disk-format storage (all 64bit wide), integrated to metadata for ffs (and playing nicely with wapbl). Quotas are enabled on a ffs filesystem via superblock flags. tunefs(8) can enable or disable quotas. On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid block and inode usages, and will check and update quotas in Pass 6. quota usage and limits are stored in unliked files (one for users, one for groups)l fsck_ffs(8) will create the files if needed, or free them if needed. This means that after enabling or disabling quotas on a filesystem; a fsck_ffs(8) run is required. quotacheck(8) is not needed any more, on a unclean shutdown fsck or journal replay will take care of fixing quotas. newfs(8) can create a ready-to-mount quota-enabled filesystem (superblock flags are set and quota inodes are created). Other new features or semantic changes: - default quota datas, applied to users or groups which don't already have a quota entry - per-user/group grace time (instead of a filesystem global one) - 0 really means "nothing allowed at all", not "no limit". If you want "no limit", set the limit to UQUAD_MAX (tools will understand "unlimited" and "-")
A quota file is structured as follow: it starts with a header, containing a few per-filesystem values, and the default quota limits. Quota entries are linked together as a simple list, each entry has a pointer (as an offset withing the file) to the next. The header has a pointer to a list of free quota entries, and a hash table of in-use entries. The size of the hash table depends on the filesystem block size (header+hash table should fit in the first block). The file is not sparse and is a multiple of filesystem block size (when the free quota entry list is empty a new filesystem block is allocated). quota entries to not cross filesystem block boundaries.
In memory, the kernel keeps a cache of recently used quota entries as a reference to the block number, and offset withing the block. The quota entry itself is keept in the buf cache.
fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with related atf tests :) The kernel can update disk usage and report it via quotactl(2).
Todo: enforce quotas limits (limits are not checked by kernel yet) update repquota, edquota and rpc.rquotad to the new world implement compat_50_quotactl ioctl. update quotactl(2) man page
fsck_ffs required fixes so that allocating new blocks or inodes will properly update the superblock and cg sumaries. This was not an issue up to now because superblock and cg sumaries check happened last, but now allocations or frees can happen in pass 6.
|
| 1.49.30.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
| 1.49.26.1 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
| 1.52.12.3 |
| 21-Apr-2020 |
martin | Sync with HEAD
|
| 1.52.12.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
| 1.52.12.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
| 1.56.2.1 |
| 13-May-2023 |
martin | Pull up following revision(s) (requested by chs in ticket #162):
sbin/fsck_ffs/inode.c: revision 1.74 sbin/fsck_ffs/utilities.c: revision 1.68 sbin/fsck_ffs/fsck.h: revision 1.57 sbin/fsck_ffs/pass4.c: revision 1.30
catch up with sign changes in the fs.h
|
| 1.58.2.1 |
| 02-Aug-2025 |
perseant | Sync with HEAD
|