1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-23 11:18:54 +00:00
freebsd/sys/ufs/ffs
Jason Evans 0384fff8c5 Major update to the way synchronization is done in the kernel. Highlights
include:

* Mutual exclusion is used instead of spl*().  See mutex(9).  (Note: The
  alpha port is still in transition and currently uses both.)

* Per-CPU idle processes.

* Interrupts are run in their own separate kernel threads and can be
  preempted (i386 only).

Partially contributed by:	BSDi (BSD/OS)
Submissions by (at least):	cp, dfr, dillon, grog, jake, jhb, sheldonh
2000-09-07 01:33:02 +00:00
..
ffs_alloc.c Minor change: fix warning - move a 'struct vnode *vp' declaration inside a 2000-07-28 22:27:00 +00:00
ffs_balloc.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
ffs_extern.h This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
ffs_inode.c Clean up the snapshot code so that it no longer depends on the use of 2000-07-26 23:07:01 +00:00
ffs_snapshot.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
ffs_softdep_stub.c Initialize *countp to 0 in stub for softdep_flushworklist(). 2000-08-09 00:41:54 +00:00
ffs_softdep.c Major update to the way synchronization is done in the kernel. Highlights 2000-09-07 01:33:02 +00:00
ffs_subr.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
ffs_tables.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ffs_vfsops.c Fix the lockmgr panic everyone is seeing at shutdown time. 2000-08-01 14:15:07 +00:00
ffs_vnops.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
fs.h Get userland visible flags added for snapshots to give a few days 2000-07-04 04:58:34 +00:00
README.snapshot Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
README.softupdates Update to reflect current status. 2000-07-08 02:31:21 +00:00
softdep.h Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00

$FreeBSD$

Using Soft Updates

To enable the soft updates feature in your kernel, add option
SOFTUPDATES to your kernel configuration.

Once you are running a kernel with soft update support, you need to enable
it for whichever filesystems you wish to run with the soft update policy.
This is done with the -n option to tunefs(8) on the UNMOUNTED filesystems,
e.g. from single-user mode you'd do something like:

	tunefs -n enable /usr

To permanently enable soft updates on the /usr filesystem (or at least
until a corresponding ``tunefs -n disable'' is done).


Soft Updates Copyright Restrictions

As of June 2000 the restrictive copyright has been removed and 
replaced with a `Berkeley-style' copyright. The files implementing
soft updates now reside in the sys/ufs/ffs directory and are
compiled into the generic kernel by default.


Soft Updates Status

The soft updates code has been running in production on many
systems for the past two years generally quite successfully.
The two current sets of shortcomings are:

1) On filesystems that are chronically full, the two minute lag
   from the time a file is deleted until its free space shows up
   will result in premature filesystem full failures. This
   failure mode is most evident in small filesystems such as
   the root. For this reason, use of soft updates is not
   recommended on the root filesystem.

2) If your system routines runs parallel processes each of which
   remove many files, the kernel memory rate limiting code may
   not be able to slow removal operations to a level sustainable
   by the disk subsystem. The result is that the kernel runs out
   of memory and hangs.

Both of these problems are being addressed, but have not yet
been resolved. There are no other known problems at this time.


How Soft Updates Work

For more general information on soft updates, please see:
	http://www.mckusick.com/softdep/
	http://www.ece.cmu.edu/~ganger/papers/CSE-TR-254-95/

--
Marshall Kirk McKusick <mckusick@mckusick.com>
July 2000