1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-29 12:03:03 +00:00
Mirror of the FreeBSD src repository https://git.FreeBSD.org/src.git .
Go to file
Brian Feldman cc3149b1ea Fix a serious deadlock with the NFS client. Given a large enough
atomic write request, it can fill the buffer cache with the entirety
of that write in order to handle retries.  However, it never drops
the vnode lock, or else it wouldn't be atomic, so it ends up waiting
indefinitely for more buf memory that cannot be gotten as it has it
all, and it waits in an uncancellable state.

To fix this, hibufspace is exported and scaled to a reasonable
fraction.  This is used as the limit of how much of an atomic write
request by the NFS client will be handled asynchronously.  If the
request is larger than this, it will be turned into a synchronous
request which won't deadlock the system.  It's possible this value is
far off from what is required by some, so it shall be tunable as soon
as mount_nfs(8) learns of the new field.

The slowdown between an asynchronous and a synchronous write on NFS
appears to be on the order of 2x-4x.

General nod by:	gad
MFC after:	2 weeks
More testing:	wes
PR:		kern/79208
2005-06-10 23:50:41 +00:00
bin Remove kludges intended to support src trees with partial obj trees. 2005-06-10 06:12:53 +00:00
contrib pullup security fix on vendor branch 2005-06-09 15:54:42 +00:00
crypto Forgot to bump the version addendum. 2005-06-05 18:30:53 +00:00
etc - In preparation to turning syscons(4) etc. on by default in the sparc64 2005-06-10 23:06:14 +00:00
games Snoopy in quality of life. 2005-06-10 08:58:44 +00:00
gnu Clean up after the last change -- remove now stale comment. 2005-06-10 07:06:07 +00:00
include MFP4: 2005-06-09 19:45:09 +00:00
kerberos5 Remove kludges intended to support src trees with partial obj trees. 2005-06-10 06:12:53 +00:00
lib Remove rexecd(8), a server that implements a particularly insecure 2005-06-10 20:52:36 +00:00
libexec Remove rexecd(8), a server that implements a particularly insecure 2005-06-10 20:52:36 +00:00
release Fix section number of hostapd(8) and wpa_supplicant(8). 2005-06-08 12:57:47 +00:00
rescue Fix path to dhclient-script and reconnect to build. 2005-06-07 04:51:24 +00:00
sbin Use MOPT_END in favor of MOPT_NULL, which better describes the purporse 2005-06-10 09:51:43 +00:00
secure Revert the commits that made libssh an INTERNALLIB; they caused too much 2005-06-07 09:31:28 +00:00
share Update prototype for function pmap_init(), it no longer has the arguments 2005-06-10 17:19:27 +00:00
sys Fix a serious deadlock with the NFS client. Given a large enough 2005-06-10 23:50:41 +00:00
tools Add entry for recoverdisk. 2005-06-06 00:18:17 +00:00
usr.bin Don't free(sock) before it's even allocated. 2005-06-10 06:36:03 +00:00
usr.sbin Remove rexecd(8), a server that implements a particularly insecure 2005-06-10 20:52:36 +00:00
COPYRIGHT
LOCKS Document the previously existing RELENG_[45]_* security branch locks. 2005-06-02 22:57:30 +00:00
MAINTAINERS Since there's no emulation person, move the entry to upper section 2005-06-04 16:56:35 +00:00
Makefile Repo-copy tools/regression/usr.bin/make to tools/build/make_check 2005-03-02 12:33:23 +00:00
Makefile.inc1 Allow to override the compiler, linker, and assembler used to build 32-bit 2005-06-06 09:39:46 +00:00
README
UPDATING Mention hwpmc(4) ABI/API changes in the 20050609 entry. 2005-06-10 19:59:26 +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/doc/en_US.ISO8859-1/books/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 might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/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.

kerberos5	Kerberos5 (Heimdal) 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/doc/en_US.ISO8859-1/books/handbook/synching.html