FreeBSD src
Go to file
Allan Jude 87ed2b7f5a A new implementation of the loader block cache
The block cache implementation in loader has proven to be almost useless, and in worst case even slowing down the disk reads due to insufficient cache size and extra memory copy.
Also the current cache implementation does not cache reads from CDs, or work with zfs built on top of multiple disks.
Instead of an LRU, this code uses a simple hash (O(1) read from cache), and instead of a single global cache, a separate cache per block device.
The cache also implements limited read-ahead to increase performance.
To simplify read ahead management, the read ahead will not wrap over bcache end, so in worst case, single block physical read will be performed to fill the last block in bcache.

Booting from a virtual CD over IPMI:
0ms latency, before: 27 second, after: 7 seconds
60ms latency, before: over 12 minutes, after: under 5 minutes.

Submitted by:	Toomas Soome <tsoome@me.com>
Reviewed by:	delphij (previous version), emaste (previous version)
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D4713
2016-04-18 23:09:22 +00:00
bin sh: Write LINENO value to stack string directly. 2016-04-16 12:14:44 +00:00
cddl Print error messages to stderr 2016-04-16 12:32:26 +00:00
contrib MFV r298178: 2016-04-18 07:36:24 +00:00
crypto Re-add AES-CBC ciphers to the default cipher list on the server. 2016-03-11 00:23:10 +00:00
etc Turn ssh_host_dsa_key back on until PR#208254 is taken care of. 2016-04-17 03:57:37 +00:00
gnu Follow-up r297842: Rework header generation to fix always rebuilding. 2016-04-18 18:13:58 +00:00
include Import libucl 0.8.0 2016-04-17 21:25:53 +00:00
kerberos5 Remove the old depend (mkdep) code and make FAST_DEPEND the one true way. 2016-03-30 23:50:23 +00:00
lib A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
libexec rbootd: use NULL instead of zero for pointers. 2016-04-18 15:05:48 +00:00
release MFH 2016-04-16 02:32:12 +00:00
rescue Split /rescue into its own package. 2016-02-08 14:27:45 +00:00
sbin User NULL instead of 0 for pointers. 2016-04-18 14:12:42 +00:00
secure MFH 2016-04-04 23:55:32 +00:00
share Allow -f dirdeps.mk some/dir with no TARGET_MACHINE spec 2016-04-18 22:00:26 +00:00
sys A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
targets Simplify building libpam and fix libpam.a not containing the modules since r284345. 2016-04-14 01:17:03 +00:00
tests Minor cosmetic cleanup 2016-04-18 07:48:27 +00:00
tools Remove leftover from Big5HKSCS removal 2016-04-17 12:12:25 +00:00
usr.bin Use NULL instead of 0 for pointers. 2016-04-18 14:44:01 +00:00
usr.sbin Reuse our roundup2() macro instead of reinventing the wheel. 2016-04-18 17:30:33 +00:00
.arcconfig Add repository.callsign, to help arcanist figure out what repo it's 2015-07-02 22:23:52 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2015-12-31 11:21:45 +00:00
LOCKS Explicitly require Security Officer's approval for kernel PRNG bits. 2013-09-17 14:19:05 +00:00
MAINTAINERS Add myself to MAINTAINERS. 2016-03-14 16:27:43 +00:00
Makefile Follow-up r298220: Don't pass down META_MODE which will still enable it. 2016-04-18 18:39:43 +00:00
Makefile.inc1 Add MK_AUTO_OBJ=no to ${MAKE} invocation if PKG_VERSION needs to be 2016-04-18 19:27:51 +00:00
Makefile.libcompat Set CPP from XCPP for the libcompat build. 2016-04-15 18:32:05 +00:00
ObsoleteFiles.inc Complete the Obsoletefiles entries 2016-04-16 18:07:44 +00:00
README Vendor import of file 4.26. 2016-04-18 04:43:03 +00:00
UPDATING Add update. 2016-04-15 04:45:37 +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.  See build(7)
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

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.  See build(7), config(8),
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
for more information.

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 kernel configuration files reside in the sys/<arch>/conf
sub-directory.  GENERIC is the default configuration used in release builds.
NOTES contains entries and documentation for all possible
devices, not just those commonly used.


Source Roadmap:
---------------

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

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.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

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