FreeBSD src
Go to file
Kirk McKusick bd4bd019fb When deleting a file, the ordering of events imposed by soft updates
is to first write the deleted directory entry to disk, second write
the zero'ed inode to disk, and finally to release the freed blocks
and the inode back to the cylinder-group map. As this ordering
requires two disk writes to occur which are normally spaced about
30 seconds apart (except when memory is under duress), it takes
about a minute from the time that a file is deleted until its inode
and data blocks show up in the cylinder-group map for reallocation.
If a file has had only a brief lifetime (less than 30 seconds from
creation to deletion), neither its inode nor its directory entry
may have been written to disk. If its directory entry has not been
written to disk, then we need not wait for that directory block to
be written as the on-disk directory block does not reference the
inode. Similarly, if the allocated inode has never been written to
disk, we do not have to wait for it to be written back either as
its on-disk representation is still zero'ed out. Thus, in the case
of a short lived file, we can simply release the blocks and inode
to the cylinder-group map immediately. As the inode and its blocks
are released immediately, they are immediately available for other
uses. If they are not released for a minute, then other inodes and
blocks must be allocated for short lived files, cluttering up the
vnode and buffer caches. The previous code was a bit too aggressive
in trying to release the blocks and inode back to the cylinder-group
map resulting in their being made available when in fact the inode
on disk had not yet been zero'ed. This patch takes a more conservative
approach to doing the release which avoids doing the release prematurely.
2000-11-14 09:00:25 +00:00
bin Avoid use of direct troff requests in mdoc(7) manual pages. 2000-11-10 17:46:15 +00:00
contrib Fixed the last-minute bug I have made in previous revision (.ie -> .if). 2000-11-13 16:23:00 +00:00
crypto Add login_cap and login_access support. Previously, these FreeBSD-local 2000-11-14 04:35:03 +00:00
etc Disable /usr/bin/ssh being setuid root by default. Let the variable 2000-11-14 04:42:25 +00:00
games Avoid use of direct troff requests in mdoc(7) manual pages. 2000-11-10 17:46:15 +00:00
gnu Build and install the useful `readelf' util that is new with Binutils 2.10.0. 2000-11-13 09:47:31 +00:00
include Convert all users of fldoff() to offsetof(). fldoff() is bad 2000-10-27 11:45:49 +00:00
kerberos5 Fix ordering for real this time. 2000-08-30 03:44:30 +00:00
kerberosIV Remove the last vestiges of libRSAglue now that it's an empty stub. 2000-03-11 22:34:10 +00:00
lib Change [Ii]t's to "It is" and "its" as appropriate. 2000-11-14 07:36:51 +00:00
libexec Avoid use of direct troff requests in mdoc(7) manual pages. 2000-11-10 17:46:15 +00:00
release Don't put pcm device on boot floppies (yet - it would be kinda nice to be 2000-11-14 01:15:02 +00:00
sbin Be a little clearer about the relationship between these two. 2000-11-12 16:29:52 +00:00
secure Disable /usr/bin/ssh being setuid root by default. Let the variable 2000-11-14 04:42:25 +00:00
share Disable /usr/bin/ssh being setuid root by default. Let the variable 2000-11-14 04:42:25 +00:00
sys When deleting a file, the ordering of events imposed by soft updates 2000-11-14 09:00:25 +00:00
tools The latest & greatest unused #include spotter. Faster, one-pass and 2000-10-28 21:44:05 +00:00
usr.bin -U cannot be an option since some signals start with U. -u is the 2000-11-12 07:43:50 +00:00
usr.sbin Replace GNOME + Afterstep choice with GNOME + sawfish. This is a more 2000-11-14 00:03:52 +00:00
COPYRIGHT
Makefile While we're still arguing over debugging output, at least be in a 2000-11-07 08:47:11 +00:00
Makefile.inc1 libgcc now needs to be built earlier in the build. 2000-11-10 22:02:06 +00:00
Makefile.upgrade
README Slightly improve the description of "crypto". "DES" is a subset of 2000-08-31 17:59:01 +00:00
UPDATING Try to catchup with my UPDATING backlog: 2000-11-03 07:04:43 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The
``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you have to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html