Commit Graph

336 Commits

Author SHA1 Message Date
fvdl 7b402ff9df If an alternate superblock is used, update the standard one correctly. 2003-04-14 18:50:52 +00:00
yamt f5f20840e2 save and restore errno in signal handlers. 2003-04-13 10:22:40 +00:00
enami e89481b248 Correctly detect a UFS1 file system of non-native endian. 2003-04-11 10:21:40 +00:00
fvdl 774a28f33f Correctly deal with directories that need indirect blocks by adding
some code I missed in the UFS2 commit. Should fix false positives
seen by fsck_ffs on clean filesystems.

Thanks to Takahiro Kambe for debugging help.
2003-04-09 12:49:28 +00:00
fvdl e06c710852 Swap the right blocks in an inode in the byteswapping case. 2003-04-08 14:59:52 +00:00
fvdl 750ed85d47 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.
2003-04-06 17:23:25 +00:00
fvdl 8e4c90f49a Skip checks for old 4.2BSD filesystem; as it stands, we can't deal with
writing them. Could be fixed, but doesn't have a high priority.
2003-04-05 13:45:21 +00:00
fvdl 5f7172ed40 When fixing the cstotal structure, use the right size to copy it back.
Also, remove some accidentally committed debug code from the previous
commit.
2003-04-04 15:02:40 +00:00
fvdl 373feac024 Initialize cg_irotor correctly in newcg, to avoid false positives
for bad cylinder groups.
2003-04-04 13:45:21 +00:00
he e75cb67772 On LP64 hosts, iswap64() result is "long int", so cast result to (long long)
before printing with %lld.
2003-04-02 22:27:09 +00:00
he bfd92e95d2 The new UFS2 code uses memset(), so include <string.h> for prototype. 2003-04-02 22:25:56 +00:00
fvdl 42614ed3f3 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.
2003-04-02 10:39:19 +00:00
wiz 0acfa3bb9e Consistently spell occurrence with two rs. 2003-03-29 22:48:37 +00:00
wiz 990562bfef .Nm does not need a dummy argument ("") before punctuation or
for correct formatting of the SYNOPSIS any longer.
2003-02-25 10:34:36 +00:00
fvdl bb8bd280d4 Only check relevant fields when comparing the superblock to an alternate
superblock. Avoids false positives should fsck_ffs be run on a filesystem
that was created after the UFS2 code has been merged.

This commit is mostly a forward compatibility patch that can be pulled
up in to the 1.6 branch.

From Kirk Mckusick in FreeBSD (setup.c rev. 1.30). Original commit message:
========
When checking the alternate superblock, we used to copy any fields
that might have changed, then did a byte-by-byte comparison with
the alternate. If any unused fields got used, they had to be added
to the exception list. Such changes caused too many false alarms.
So, I have changed the comparison algorithm to compare a selected
set of fields that are not expected to change. This new algorithm
causes far fewer false hits and still does a good job of detecting
problems when they have really occurred. In particular, this change
should ease the transition to kernels supporting UFS2 which make
some significant changes to the superblock.

Sponsored by:	DARPA, NAI Labs
========
2003-02-21 15:15:49 +00:00
grant c39c2e62d5 'NetBSD.org' and some mdoc fixes. 2003-02-14 16:21:47 +00:00
mrg cf9ff87a3a make this build on alpha after daddr_t->64bit 2003-01-28 05:17:12 +00:00
fvdl a3ff3a3038 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.
2003-01-24 21:55:02 +00:00
dbj 3f75e3780c check that a disklabel is valid before trying to extract partition
information from it when checking for apple ufs filesystems
2002-11-05 05:18:50 +00:00
wiz 2fb4b1db52 New sentence, new line. By Robert Elz with minimal fixes. 2002-10-01 13:40:23 +00:00
dbj 43395bd5a8 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.
2002-09-28 20:11:05 +00:00
lukem 7360d7b6ae Use ${NETBSDSRCDIR}/some/path instead of ${.CURDIR}/../../some/path 2002-08-19 10:16:51 +00:00
dbj c88ccea33d commit fix from pr bin/15449
this fixes FS_42POSTBLFMT compatibility
2002-06-30 22:57:30 +00:00
simonb 1d08e313ae Don't bother testing if a uint8_t is > 256 -- that test is always false. 2002-05-09 02:55:49 +00:00
agc 6df6be6300 Make this compile on some of the more esoteric architectures. 2002-05-06 19:37:51 +00:00
lukem bb82a84ded If SIGINFO is received, display summary information to stderr.
Based on changes in FreeBSD, via Chuck Cranor <chuck@research.att.com>
2002-05-06 03:17:43 +00:00
mycroft fb1196703d Some manual strength reduction. 2002-04-10 17:29:30 +00:00
ross 8bd7cb6a69 Edit -mdoc usage.
* There is no -indent option to .Bd or .Bl, although you would
  never know that from its frequent use in this tree. There is a
  "-offset indent" combination that makes sense, and you can certainly
  say "-width indent".

* Also, you can't markup the -width option argument, tho you CAN
  use a callable macro. So "-width Ar filename" doesn't make sense,
  but either "-width Ar" or "-width filename" does, as might something
  like "-width xxfilename" for a little extra space.

* There are a lot of needlessly complex hanging tag macros in man4 used
  to create simple item lists. Those should be simplified one of these
  days before someone copies and edits yet another man4 page.
2002-02-07 03:15:06 +00:00
fvdl b2e85b4526 Don't use the pendinginodes and pendingblocks fields in alternate
superblock comparison.
2001-12-19 10:05:20 +00:00
wiz 1fd7eeefcd "than" instead of "then". 2001-11-21 19:14:19 +00:00
wiz c8fa8a4d7a Sort SEE ALSO, whitespace nits. 2001-11-16 10:11:41 +00:00
lukem 0c249d8f04 - changes to -F semantics:
- remove the restriction that filesystem must be a regular file
	- don't try and read a disklabel
- use `p' (instead of `h') as the index of the last partition
2001-11-16 05:35:40 +00:00
lukem 22966108bb add comments to make it clearer what cmpsblks() is doing 2001-09-18 08:38:28 +00:00
lukem 5c2ee5861d Incorporate the enhanced ffs_dirpref() by Grigoriy Orlov, as found in
FreeBSD (three commits; the initial work, man page updates, and a fix
to ffs_reload()), with the following differences:
- Be consistent between newfs(8) and tunefs(8) as to the options which
  set and control the tuning parameters for this work (avgfilesize & avgfpdir)
- Use u_int16_t instead of u_int8_t to keep track of the number of
  contiguous directories (suggested by Chuck Silvers)
- Work within our FFS_EI framework
- Ensure that fs->fs_maxclusters and fs->fs_contigdirs don't point to
  the same area of memory

The new algorithm has a marked performance increase, especially when
performing tasks such as untarring pkgsrc.tar.gz, etc.

The original FreeBSD commit messages are attached:

=====
mckusick    2001/04/10 01:39:00 PDT
  Directory layout preference improvements from Grigoriy Orlov <gluk@ptci.ru>.
  His description of the problem and solution follow. My own tests show
  speedups on typical filesystem intensive workloads of 5% to 12% which
  is very impressive considering the small amount of code change involved.

  ------

    One day I noticed that some file operations run much faster on
  small file systems then on big ones. I've looked at the ffs
  algorithms, thought about them, and redesigned the dirpref algorithm.

    First I want to describe the results of my tests. These results are old
  and I have improved the algorithm after these tests were done. Nevertheless
  they show how big the perfomance speedup may be. I have done two file/directory
  intensive tests on a two OpenBSD systems with old and new dirpref algorithm.
  The first test is "tar -xzf ports.tar.gz", the second is "rm -rf ports".
  The ports.tar.gz file is the ports collection from the OpenBSD 2.8 release.
  It contains 6596 directories and 13868 files. The test systems are:

  1. Celeron-450, 128Mb, two IDE drives, the system at wd0, file system for
     test is at wd1. Size of test file system is 8 Gb, number of cg=991,
     size of cg is 8m, block size = 8k, fragment size = 1k OpenBSD-current
     from Dec 2000 with BUFCACHEPERCENT=35

  2. PIII-600, 128Mb, two IBM DTLA-307045 IDE drives at i815e, the system
     at wd0, file system for test is at wd1. Size of test file system is 40 Gb,
     number of cg=5324, size of cg is 8m, block size = 8k, fragment size = 1k
     OpenBSD-current from Dec 2000 with BUFCACHEPERCENT=50

  You can get more info about the test systems and methods at:
  http://www.ptci.ru/gluk/dirpref/old/dirpref.html

                                Test Results

               tar -xzf ports.tar.gz               rm -rf ports
    mode  old dirpref new dirpref speedup old dirprefnew dirpref speedup
                               First system
   normal     667         472      1.41       477        331       1.44
   async      285         144      1.98       130         14       9.29
   sync       768         616      1.25       477        334       1.43
   softdep    413         252      1.64       241         38       6.34
                               Second system
   normal     329         81       4.06       263.5       93.5     2.81
   async      302         25.7    11.75       112          2.26   49.56
   sync       281         57.0     4.93       263         90.5     2.9
   softdep    341         40.6     8.4        284          4.76   59.66

  "old dirpref" and "new dirpref" columns give a test time in seconds.
  speedup - speed increasement in times, ie. old dirpref / new dirpref.

  ------

  Algorithm description

  The old dirpref algorithm is described in comments:

  /*
   * Find a cylinder to place a directory.
   *
   * The policy implemented by this algorithm is to select from
   * among those cylinder groups with above the average number of
   * free inodes, the one with the smallest number of directories.
   */

  A new directory is allocated in a different cylinder groups than its
  parent directory resulting in a directory tree that is spreaded across
  all the cylinder groups. This spreading out results in a non-optimal
  access to the directories and files. When we have a small filesystem
  it is not a problem but when the filesystem is big then perfomance
  degradation becomes very apparent.

  What I mean by a big file system ?

    1. A big filesystem is a filesystem which occupy 20-30 or more percent
       of total drive space, i.e. first and last cylinder are physically
       located relatively far from each other.
    2. It has a relatively large number of cylinder groups, for example
       more cylinder groups than 50% of the buffers in the buffer cache.

  The first results in long access times, while the second results in
  many buffers being used by metadata operations. Such operations use
  cylinder group blocks and on-disk inode blocks. The cylinder group
  block (fs->fs_cblkno) contains struct cg, inode and block bit maps.
  It is 2k in size for the default filesystem parameters. If new and
  parent directories are located in different cylinder groups then the
  system performs more input/output operations and uses more buffers.
  On filesystems with many cylinder groups, lots of cache buffers are
  used for metadata operations.

  My solution for this problem is very simple. I allocate many directories
  in one cylinder group. I also do some things, so that the new allocation
  method does not cause excessive fragmentation and all directory inodes
  will not be located at a location far from its file's inodes and data.
  The algorithm is:
  /*
   * Find a cylinder group to place a directory.
   *
   * The policy implemented by this algorithm is to allocate a
   * directory inode in the same cylinder group as its parent
   * directory, but also to reserve space for its files inodes
   * and data. Restrict the number of directories which may be
   * allocated one after another in the same cylinder group
   * without intervening allocation of files.
   *
   * If we allocate a first level directory then force allocation
   * in another cylinder group.
   */

    My early versions of dirpref give me a good results for a wide range of
  file operations and different filesystem capacities except one case:
  those applications that create their entire directory structure first
  and only later fill this structure with files.

    My solution for such and similar cases is to limit a number of
  directories which may be created one after another in the same cylinder
  group without intervening file creations. For this purpose, I allocate
  an array of counters at mount time. This array is linked to the superblock
  fs->fs_contigdirs[cg]. Each time a directory is created the counter
  increases and each time a file is created the counter decreases. A 60Gb
  filesystem with 8mb/cg requires 10kb of memory for the counters array.

    The maxcontigdirs is a maximum number of directories which may be created
  without an intervening file creation. I found in my tests that the best
  performance occurs when I restrict the number of directories in one cylinder
  group such that all its files may be located in the same cylinder group.
  There may be some deterioration in performance if all the file inodes
  are in the same cylinder group as its containing directory, but their
  data partially resides in a different cylinder group. The maxcontigdirs
  value is calculated to try to prevent this condition. Since there is
  no way to know how many files and directories will be allocated later
  I added two optimization parameters in superblock/tunefs. They are:

          int32_t  fs_avgfilesize;   /* expected average file size */
          int32_t  fs_avgfpdir;      /* expected # of files per directory */

  These parameters have reasonable defaults but may be tweeked for special
  uses of a filesystem. They are only necessary in rare cases like better
  tuning a filesystem being used to store a squid cache.

  I have been using this algorithm for about 3 months. I have done
  a lot of testing on filesystems with different capacities, average
  filesize, average number of files per directory, and so on. I think
  this algorithm has no negative impact on filesystem perfomance. It
  works better than the default one in all cases. The new dirpref
  will greatly improve untarring/removing/coping of big directories,
  decrease load on cvs servers and much more. The new dirpref doesn't
  speedup a compilation process, but also doesn't slow it down.

  Obtained from:	Grigoriy Orlov <gluk@ptci.ru>
=====

=====
iedowse     2001/04/23 17:37:17 PDT
  Pre-dirpref versions of fsck may zero out the new superblock fields
  fs_contigdirs, fs_avgfilesize and fs_avgfpdir. This could cause
  panics if these fields were zeroed while a filesystem was mounted
  read-only, and then remounted read-write.

  Add code to ffs_reload() which copies the fs_contigdirs pointer
  from the previous superblock, and reinitialises fs_avgf* if necessary.

  Reviewed by:	mckusick
=====

=====
nik         2001/04/10 03:36:44 PDT
  Add information about the new options to newfs and tunefs which set the
  expected average file size and number of files per directory.  Could do
  with some fleshing out.
=====
2001-09-06 02:16:00 +00:00
lukem 697080de7e no need to assign asb->fs_state twice in cmpsblks() 2001-09-03 14:53:31 +00:00
lukem c50eb8cc85 deprecate fs_fscktime; we never used it.
in an effort to maintain compatibility with freebsd/openbsd/whatever,
i'm attempting to get the superblock format in sync, and freebsd uses
the int32_t at this position for `fs_pendinginodes'.

if we ever decide to implement fscktime functionality, we'll:
a) make sure to liaise with the other projects to reserve the same
   spare field
b) actually implement the code this time ...

(this is also preparing us for other changes, like the new dirpref code)
2001-09-03 14:52:17 +00:00
lukem e3ba61f9f3 Incorporate fix by iedowse @ FreeBSD to allow disks with large numbers of
cylinder groups to work correctly, with minor modifications by me to work
with our FFS_EI code.  From the FreeBSD commit message:

	The ffs superblock includes a 128-byte region for use by temporary
	in-core pointers to summary information. An array in this region
	(fs_csp) could overflow on filesystems with a very large number of
	cylinder groups (~16000 on i386 with 8k blocks). When this happens,
	other fields in the superblock get corrupted, and fsck refuses to
	check the filesystem.

	Solve this problem by replacing the fs_csp array in 'struct fs'
	with a single pointer, and add padding to keep the length of the
	128-byte region fixed. Update the kernel and userland utilities
	to use just this single pointer.

	With this change, the kernel no longer makes use of the superblock
	fields 'fs_csshift' and 'fs_csmask'. Add a comment to newfs/mkfs.c
	to indicate that these fields must be calculated for compatibility
	with older kernels.

	Reviewed by:    mckusick
2001-09-02 01:58:30 +00:00
wiz 1e378c4c12 precede, not preceed. 2001-08-20 12:00:46 +00:00
lukem 1b81d6353d 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.
2001-08-17 02:18:46 +00:00
lukem 84958ed05f - implement -F; treat provided filesystems as images in regular files
- replace "filesystem" with "file system" as appropriate
- grammar fixes
2001-08-15 03:54:53 +00:00
lukem d6e3055ff1 minor whitespace cleanup 2001-08-15 03:40:50 +00:00
hubertf 1adda5370d EVEN IF YOU SCREAM, THE COMMANT IS STILL CALLED fsck_ffs ! 2001-07-04 22:43:35 +00:00
wiz 73f545bb5b Drop arguments of .Os. 2001-06-05 11:22:41 +00:00
christos 28e741ef5e fix compile errors. 2001-02-23 07:51:41 +00:00
cgd 8a986b2e96 convert to use getprogname() 2001-02-19 22:48:57 +00:00
christos 566662ba06 remove redundant declarations 2001-02-04 21:25:54 +00:00
thorpej 9c45d4b02d 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.
2001-01-26 17:37:16 +00:00
mycroft 1fa165bd82 Fix a rather glaring byte-swapping bug: di_size is 64 bits, not 16. 2001-01-23 02:35:51 +00:00
mycroft 521984e793 Whoops; call propagate() with the right child inode number. (Doesn't break
anything, but it would have made reconnect less efficient.)
2001-01-10 08:26:20 +00:00
mycroft f5a9d5eadc Abstract the code to attach a directory to its parent's child list into a
separate function, and call it from multiple places in linkup() to handle
reconnects and creation of /lost+found.
2001-01-10 08:22:20 +00:00
mycroft d722519e03 Make sure the rotor values are non-negative. 2001-01-09 11:20:00 +00:00
mycroft a48409305d A minor tweak. 2001-01-09 09:25:32 +00:00
enami 6c06fd4f9f Don't swap cg_clustersum(cg)[0]. It doesn't actually exists and it's
actually tail of free block bitmap.

XXX swap_cg() should be shared with newfs.
2001-01-09 09:08:35 +00:00
mycroft c4c9a7ecc0 Remove a bogus piece of code that was never used. 2001-01-09 06:05:10 +00:00
mycroft 66418680d4 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.
2001-01-09 05:51:14 +00:00
mycroft 3f2ff10f4c Try to cope with cs_ndir being wacky (too large or, particularly when using -b,
too damn small) by setting a minimum (1024) and maximum (maxino + 1).  This
prevents certain operations getting REALLY slow when -b is used, and also
avoids overallocating memory if the superblock is hosed.
2001-01-09 05:39:27 +00:00
lukem f7650338ca use %ll_ instead of the less standard %q_ 2001-01-05 02:02:57 +00:00
simonb 6714e09fe2 Need an lfdir global variable now. 2000-12-14 00:32:22 +00:00
scw 9482a2a194 Some more `extern's for initialised globals. 2000-12-13 22:38:15 +00:00
mycroft 078acb237c Fix an annoyingly incorrect message. 2000-12-13 03:04:51 +00:00
is 9979da6cbb Format string cleanups by Bill Sommerfeld. 2000-10-10 20:24:49 +00:00
castor d02d10e226 Fix an evil ugly bug which causes files placed into lost+found to
be inconsistent, and unremovable. From Ethan Solomita <ethan@geocast.com>.
Reviewed by fvdl.
2000-08-03 14:52:39 +00:00
mycroft 9496d82675 Add a missing newline in one message.
(The fact that I got this message using softdep should probably disturb
someone...)
2000-07-14 02:43:44 +00:00
christos c1936bfd69 - ARGH /brick fvdl
- Put back the change from revision 1.31
1999-12-12 23:53:26 +00:00
bouyer 15ca2512dc Add a missing '\n'. 1999-11-28 20:03:17 +00:00
mrg f6bf35c814 fix lp64 lossage. 1999-11-17 00:29:54 +00:00
fvdl f2651c65ac Fix %d <-> long mismatch. 1999-11-15 20:31:51 +00:00
fvdl 5a92829791 Update for softdep code. 1999-11-15 19:19:41 +00:00
fvdl a905c40444 Changes for softdep code. 1999-11-15 19:18:24 +00:00
christos 0e578b8b02 make sure that we don't try to allocate negative memory when blks == 0. 1999-09-06 19:52:28 +00:00
is 69741f8d3d Fix typo. 1999-05-01 20:04:14 +00:00
mycroft f6590b22cd Clean up SYNOPSIS formatting. 1999-03-07 11:02:05 +00:00
bouyer 3e3f9c7795 #include machine/bswap.h and remove -lutil. 1999-01-15 13:32:05 +00:00
christos 7b57bf6d78 Adjust for DKTYPENAME changes. 1998-11-12 16:19:47 +00:00
thorpej df7e58ed2e Use DINODE_SIZE rather than sizeof(struct dinode) and/or pointer arithmetic. 1998-10-23 01:13:33 +00:00
ross 029a64cc29 from Erik Bertelsen <erik@mediator.uni-c.dk>
{ put } { in } { lots } { of } { these } { to } { shut } { up } { egcs }
1998-08-25 19:18:12 +00:00
mycroft 519d858510 __AUDIT__ cleanup. 1998-07-28 19:22:54 +00:00
mycroft 217e6f7a7e const poisoning. 1998-07-26 20:32:42 +00:00
mycroft 2d452ae63c Remove redundant declaration. 1998-07-26 20:28:55 +00:00
msaitoh 6e6138d601 fix typo. 1998-05-25 10:41:57 +00:00
mycroft 72a3da3933 copyback_cg() tried to copy too much if the cylinder group info was smaller
than 8k.  From PR 5404.
1998-05-06 02:45:09 +00:00
kleink 38103c73ff Need <time.h> for time() prototype. 1998-04-01 15:55:43 +00:00
kleink 3072a632c5 Need <time.h> for ctime() and time() prototypes. 1998-04-01 15:38:58 +00:00
mrg 8578360272 use extern int over extern 1998-03-30 02:07:59 +00:00
bouyer 9aaa32d9a7 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").
1998-03-18 17:01:23 +00:00
fvdl e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
mjacob b6558b2b59 Hmmm..fsck_ffs has to really be able to alwasy work, and if you've got
a *huge* (like 600GB) filesystem, you need to not be limited by resource
limits.
1997-11-02 01:42:44 +00:00
mycroft e96e918e60 Use bsd.subdir.mk as appropriate. 1997-10-11 09:34:07 +00:00
christos e230a48b57 CFLAGS->CPPFLAGS 1997-10-10 19:47:50 +00:00
enami 9f86d6ed5e Don't declare optind and optarg. 1997-10-01 02:15:48 +00:00
lukem 8b07f7ca3d for now, #ifdef out a couple of chunks that were added in the lite2 merge 1997-09-24 09:24:21 +00:00
lukem e808c63383 unnecessary file from lite-2 merge 1997-09-21 04:08:55 +00:00
lukem ea79507baf reintroduce clarity changes made in rev1.14 that were lost in the lite2 merge 1997-09-21 03:51:34 +00:00
lukem 90c9455b48 remove -g from CFLAGS= 1997-09-21 03:49:53 +00:00
lukem 103e158ba5 remove some code that was obsoleted by mycroft's changes to
propagate() in dir.c rev 1.14.

this was accidentally re-introduced in the lite-2 merge, and could
cause filesystem corruption.
1997-09-21 03:06:47 +00:00
lukem d2f145c7a6 a quad_t is an int64_t, not a u_int64_t... 1997-09-21 00:24:55 +00:00
lukem af479c48b8 - 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
1997-09-20 06:16:23 +00:00
lukem e111111128 resolve conflicts from lite-2 merge. 1997-09-16 16:44:43 +00:00
lukem 50badc6f7a imported from lite-2 1997-09-16 15:06:55 +00:00
mrg 52ff5d8fee make these compile on the alpha after WARNS=1. 1997-09-16 08:37:01 +00:00
lukem 6277ca4089 use .Nm correctly 1997-09-15 01:39:32 +00:00
lukem b1db038303 * cleanup for WARNS=1
* deprecate register
* cleanup manpage
* remove unused docheck() func
* prefix hex numbers with '0x'
* getopt returns -1 not EOF
1997-09-14 14:36:29 +00:00
gwr 10e180cc49 Back out the .PATH.c changes. The .depend problem (and others)
will be fixed using the new .NOPATH make feature instead.
1997-05-08 21:11:01 +00:00
gwr 012e528f2e Use .PATH.c: ... 1997-05-06 20:44:56 +00:00
mrg b6daab9f37 lost+found directories are mode -1700 1997-04-21 11:34:37 +00:00
lukem bfdbb2379f The fs level (ref: fsck -c ...) can be determined from the second
line of the output from dumpfs(8), not the first line. part of [bin/1353]
1997-04-21 05:35:19 +00:00
mouse 80c0d60f84 alternate -> alternative, per PR 2643 1997-03-08 13:47:08 +00:00
mikel 9b8074878a use += instead of = for CFLAGS 1997-02-21 07:47:49 +00:00
mikel d894f16336 fix reboot(8) xref 1996-12-27 05:51:14 +00:00
mikel 875986c568 eliminate obsolete references to mkfs(8);
from Klaus Klein <kleink@layla.inka.de>
1996-12-26 04:33:34 +00:00
christos b3e604c22a - sort and remove unused options.
- If no filesystem is specified or an incorrect option, print usage information
1996-10-22 16:35:04 +00:00
christos 3cd14137ee Update this to reflect reality after the fsck/fsck_ffs split. 1996-10-22 16:32:44 +00:00
thorpej 2402aaa614 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.
1996-10-11 20:15:46 +00:00
christos c5d8ca200f - util.h -> fsutil.h 1996-09-27 22:45:10 +00:00
christos 5528d37484 - 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.
1996-09-23 16:18:31 +00:00
mycroft 96dea9e6ca Use a different tree-walking algorithm in propagate(). 1996-06-11 07:07:52 +00:00
mycroft 5c78d726e4 File sizes in FFS are u_int64_t. 1996-05-25 09:57:36 +00:00
mycroft 28670f694a Oops; use %x to print out masks, not %d. 1996-05-21 17:36:21 +00:00
mycroft e14f61b1f7 Check fs_[bf]mask, fs_maxfilesize, fs_maxsymlinklen, and fs_q[bf]mask,
since incorrect values may cause the kernel to malfunction.
1996-05-21 17:25:56 +00:00
mycroft 6dc46f6326 Adjust the logic a bit so we `nif' can't overflow. 1996-05-21 16:58:12 +00:00
mycroft 92a822c250 Remove previous (incorrect) change, and tidy up a bit to make it
clearer what's going on.
1996-05-21 15:32:16 +00:00
mrg 8c4136ca25 initalise dino to zero. pr#2098 1996-05-21 12:42:38 +00:00
mycroft 5f98044780 Try looking up the file system name in fstab. From greywolf@starwolf.com,
slightly modified.
1996-05-11 14:27:50 +00:00
cgd fea3644f0b check in changes proposed in PR 2006 (approved by J.T.), to rename fsck
to fsck_ffs, so that in the future 'fsck' can be a wrapper than invokes
appropriate filesystem-specific checker programs.  For now, the only
user-visible change is that the names have changed in the manual page
and in error messages; fsck and fsck.8 are now links to fsck_ffs and
fsck_ffs.8, until the rest of the transition is complete.
1996-04-05 01:44:24 +00:00
mycroft afdfe1b51f Use fs_csaddr to find the cg summary area. From der Mouse, PR 1366. 1996-01-18 21:55:27 +00:00
thorpej 9952e89162 Squish some type bugs pointed out by Jonathan Stone. 1995-12-17 06:03:36 +00:00
thorpej 78bd4a1051 Make this compile with -Werror. 1995-12-14 22:17:26 +00:00
jtc 0a1e7de7b6 merge in changes from 1.1 release branch 1995-11-28 05:25:28 +00:00
cgd e85da9ab29 recognize 'ffs' and 'ufs' as meaning the same thing. 1995-07-12 03:39:53 +00:00
cgd 5f6a15bcbe implement a 'force check' flag, '-f'. I used the SunOS name, but the Digital
semantics.  now:
	(1) dirty file systems will always be checked; nothing new there.
	(2) if not '-f' clean file systems will _NEVER_ be checked,
		i.e. they won't be checked even if -p isn't specified.  This
		allows one to 'fsck -p ; fsck' to preen, then clean up
		anything that 'fsck -p' barfs on, without waiting for the
		clean file systems to be checked again.
	(3) if '-f' clean file systems will ALWAYS be checked.  This
		allows people to put 'fsck -fp' into /etc/rc on systems
		where they're leery of the FS clean flag state, need
		the extra reliability, and can afford time 'wasted'
		in checks.
The assumption made here is that if a file system is marked clean, it
_IS CLEAN_, really, and shouldn't be checked unless fsck is explicitly
told to (with -f).  This should be a valid assumption, but may not be in
the presence of file system bugs.  Documentation updated to note '-f'.
1995-07-12 01:49:16 +00:00
cgd 788733b7a9 typeof(timeval.tv_sec) != time_t 1995-06-07 17:14:21 +00:00
cgd 555d4b510e slightly clean rcs ids, etc. 1995-04-23 10:33:03 +00:00
mycroft 7cb70c9889 Set the clean flag if necessary. If preening, don't check `clean' file
systems.
1995-04-12 21:24:07 +00:00
cgd 38bab6b6da type sizes 1995-03-21 01:30:09 +00:00
mycroft 283b35b06f Make sure to recreate the `..' entry in the root directory if missing. 1995-03-20 00:40:10 +00:00
cgd 0114e805ce convert to new RCS Id conventions; reduce my headache 1995-03-18 14:54:19 +00:00
cgd 9235328d5a functions which are 'fake-varaargs' should be passed longs, not ints. 1995-02-10 23:26:14 +00:00
mycroft 700673cebf Change some spacing to match Kirk's view of the world. 1994-12-28 00:15:50 +00:00
mycroft 0826920c54 Mostly sync with CSRG. 1994-12-28 00:03:49 +00:00
mycroft e5d0c2de0f Copy fs_maxcluster when comparing superblocks. 1994-12-27 19:26:57 +00:00
cgd 06e2955ff1 specify man pages the new way. 1994-12-22 10:44:04 +00:00
cgd d71db3e4a6 light clean, and make it compile against new header files. 1994-12-18 15:55:41 +00:00
cgd 73cf954189 adjust; from jimj. 1994-12-06 19:13:02 +00:00
cgd 5eeab43e28 more cleanups from Jim Jegers, passed over by me. 1994-12-05 20:15:31 +00:00
mycroft 54477c5285 Use the S_IS*() macros, and make this compile again after Chris's changes to ufs. 1994-10-28 16:55:05 +00:00
mycroft bedf1adf67 Get the byte order right when creating `.' and `..' entries. 1994-10-28 16:54:05 +00:00
mycroft 195d1d6f4e On a recursive call to fsck_readdir() through getpathname(), don't attempt to
fix a problem that's already being fixed.
1994-10-28 16:53:13 +00:00
mycroft c10923f665 dircheck() shouldn't be looking at d_type or d_namlen in blank entries
*at all*.  Not only is it wrong, but it causes a serious problem on
little-endian machines, since after -c2 conversion, d_type will often
be > 15.
1994-10-06 14:24:17 +00:00
mycroft 4922d725cf Remove some more uses of obsolete functions. 1994-09-23 23:48:10 +00:00
mycroft ea7b5d4ec6 Eliminate uses of some obsolete functions. 1994-09-23 14:26:58 +00:00
mycroft 815971855a A correct fix for the byte order problem when reconnecting. 1994-09-20 23:31:39 +00:00
mycroft 1466993ef3 Fix oversight in last patch. 1994-07-29 02:31:50 +00:00
mycroft 08d1c5cc81 Fix byte-order problem with directory entry creation. 1994-07-28 00:25:17 +00:00
cgd 138fcd8327 deal with new share/doc strategy 1994-06-30 05:33:30 +00:00
ws f455a4ed05 Reads on raw disks are only guarranteed in multiples of the block size 1994-06-29 11:01:35 +00:00
cgd 5b029eb9a8 update for new doc-make/install strategy 1994-06-25 05:57:47 +00:00
mycroft eadb2ad514 Fix compatibility with old fastlinks. 1994-06-14 22:49:57 +00:00
mycroft 16573e290b Import 4.4-Lite version. 1994-06-13 22:40:40 +00:00
mycroft ccfa3742b5 Update from 4.4-Lite, with local changes. 1994-06-08 18:57:30 +00:00
pk 77c9a3fa5b Prototype some things. 1994-05-02 10:18:21 +00:00
cgd 97c1f9d08d oops; changed comparison, but not field! 1994-04-25 18:33:42 +00:00
cgd 9a2c884999 need <sys/time.h> 1994-04-25 18:28:42 +00:00
cgd e82c231da3 need <sys/time.h> 1994-04-25 18:23:19 +00:00
cgd 1ddc4aa19f kill some code if SMALL is defined... 1994-04-18 06:08:27 +00:00
cgd eb0f0ad92d fs type names will soon be strings 1994-04-14 03:21:21 +00:00
deraadt 7f4901e6f5 typo 1994-04-13 10:12:33 +00:00
deraadt 8fb90b0ed4 from <dean@fsa.ca>: let "fsck /usr" work. also, if the user does
"fsck /dev/sd0a" attempt to map to the raw device name.
1994-04-09 08:58:31 +00:00
deraadt 73c673cd94 if user does ie, "fsck /etc/group", then types ^C to the CONTINUE
prompt do not dump core. fix from <dean@fsa.ca> (who i will stop
hounding about bug fixes for an hour or two)
1994-04-09 08:53:37 +00:00
cgd c9b86e9473 kill the evil U word! from Mike Long <mike.long@analog.com> 1994-04-06 00:08:58 +00:00
cgd e4ef74f2a0 kill extern'd lseek() 1994-03-28 06:49:06 +00:00
mycroft 0af4689100 Patch from Bruce Evans to deal with file names with NULs in them. 1993-11-05 23:32:06 +00:00
cgd 202167bebb try again to keep it from rebooting endlessly 1993-10-15 15:15:25 +00:00
cgd 86c14aeb7a set the 'clean' flag sometimes, but ignore it when deciding to clean
or not.  this allows you to use this fsck and... reboot your system;
otherwise it would inf-loop rebooting and marking the FS clean,
which would then mark the fs modified, cause a reboot, etc.
1993-10-06 00:52:07 +00:00
mycroft 978ea867b7 #if 0 the fs_clean check for now. 1993-10-03 03:54:38 +00:00
mycroft e1e7cd5d46 Don't set clean flag if -n. 1993-10-01 02:25:19 +00:00
mycroft 5f4ea60f65 Initial count for fs_state is `FS_CLEANFREQ'. 1993-10-01 01:48:01 +00:00
mycroft 3bceafed83 Skip check if filesystem is marked clean and isn't too dusty, only with -p.
Set clean flag after checking a filesystem.
1993-10-01 01:45:30 +00:00
jtc adb370a8b4 Updated to -mandoc macros. 1993-08-05 20:34:26 +00:00
mycroft e9d867ef50 Add RCS identifiers. 1993-08-01 17:54:45 +00:00
mycroft dfb9caab49 Add RCS indentifiers. 1993-08-01 07:32:48 +00:00
mycroft cda4f8f6ee Add RCS identifiers. 1993-08-01 05:37:30 +00:00
mycroft 90c92bff60 Add support for fast symlinks. 1993-06-13 21:08:27 +00:00
cgd 1d3699fbdc i don't think we're in sys.386bsd any more... 1993-04-28 05:43:55 +00:00
cgd 06be60083d changed "Id" to "Header" for rcsids 1993-03-23 00:22:59 +00:00
cgd 346aa5dd48 added rcs ids to all files 1993-03-22 08:04:00 +00:00
cgd 61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00