freebsd-dev/lib
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
..
atf MFH 2016-03-14 18:54:29 +00:00
clang Implement (ACFLAGS|CFLAGS|CXXFLAGS).SRC globally. 2016-03-26 03:46:12 +00:00
csu Don't reset CC away from full-pathed gcc. 2016-03-24 21:48:10 +00:00
lib80211 First pass through library packaging. 2016-02-04 21:16:35 +00:00
libalias Update libalias and libpam packaged files. 2016-02-05 01:03:38 +00:00
libarchive MFH 2016-03-10 21:16:01 +00:00
libauditd First pass through library packaging. 2016-02-04 21:16:35 +00:00
libbegemot First pass through library packaging. 2016-02-04 21:16:35 +00:00
libblocksruntime First pass through library packaging. 2016-02-04 21:16:35 +00:00
libbluetooth libbluetooth: use NULL instead of zero for pointers. 2016-04-18 14:41:30 +00:00
libbsdstat First pass through library packaging. 2016-02-04 21:16:35 +00:00
libbsm First pass through library packaging. 2016-02-04 21:16:35 +00:00
libbsnmp MFH r289384-r293170 2016-01-04 19:19:48 +00:00
libbz2 First pass through library packaging. 2016-02-04 21:16:35 +00:00
libc libc: do not include <sys/types.h> where <sys/param.h> was already included 2016-04-18 21:05:15 +00:00
libc_nonshared
libc++ MFH 2016-03-14 18:54:29 +00:00
libcalendar First pass through library packaging. 2016-02-04 21:16:35 +00:00
libcam MFH 2016-04-16 02:32:12 +00:00
libcasper MFH 2016-04-16 02:32:12 +00:00
libclang_rt Implement (ACFLAGS|CFLAGS|CXXFLAGS).SRC globally. 2016-03-26 03:46:12 +00:00
libcom_err First pass through library packaging. 2016-02-04 21:16:35 +00:00
libcompat rexec(3): use NULL instead of zero for pointers. 2016-04-18 14:37:26 +00:00
libcompiler_rt MFH 2016-03-06 04:13:17 +00:00
libcrypt MFH 2016-03-10 21:16:01 +00:00
libcuse First pass through library packaging. 2016-02-04 21:16:35 +00:00
libcxxrt MFH 2016-04-04 23:55:32 +00:00
libdevctl First pass through library packaging. 2016-02-04 21:16:35 +00:00
libdevinfo MFH 2016-04-04 23:55:32 +00:00
libdevstat First pass through library packaging. 2016-02-04 21:16:35 +00:00
libdpv MFH 2016-03-02 16:14:46 +00:00
libdwarf Replace ${CURDIR}/../.. with ${CURDIR:H:H} in elftoolchain 2016-04-18 13:13:59 +00:00
libedit MFH 2016-04-11 15:24:59 +00:00
libefi First pass through library packaging. 2016-02-04 21:16:35 +00:00
libelf Replace ${CURDIR}/../.. with ${CURDIR:H:H} in elftoolchain 2016-04-18 13:13:59 +00:00
libelftc Replace ${CURDIR}/../.. with ${CURDIR:H:H} in elftoolchain 2016-04-18 13:13:59 +00:00
libevent First pass through library packaging. 2016-02-04 21:16:35 +00:00
libexecinfo First pass through library packaging. 2016-02-04 21:16:35 +00:00
libexpat First pass through library packaging. 2016-02-04 21:16:35 +00:00
libfetch MFH 2016-04-11 15:24:59 +00:00
libfigpar MFH 2016-03-02 16:14:46 +00:00
libgeom First pass through library packaging. 2016-02-04 21:16:35 +00:00
libgpio MFH 2016-03-02 16:14:46 +00:00
libgssapi MFH 2016-04-16 02:32:12 +00:00
libiconv_modules META MODE: Prefer INSTALL=tools/install.sh to lessen the need for xinstall.host. 2015-11-25 19:10:28 +00:00
libipsec libipsec: use NULL instead of zero for pointers. 2016-04-18 15:08:31 +00:00
libjail First pass through library packaging. 2016-02-04 21:16:35 +00:00
libkiconv First pass through library packaging. 2016-02-04 21:16:35 +00:00
libkvm MFH 2016-04-04 23:55:32 +00:00
libldns First pass through library packaging. 2016-02-04 21:16:35 +00:00
liblzma First pass through library packaging. 2016-02-04 21:16:35 +00:00
libmagic MFV r298178: 2016-04-18 07:36:24 +00:00
libmd MFH 2016-03-02 16:14:46 +00:00
libmemstat MFH 2016-02-10 04:20:39 +00:00
libmilter MFH 2016-03-02 16:14:46 +00:00
libmp MFH 2016-03-10 21:16:01 +00:00
libmt MFH 2016-03-02 16:14:46 +00:00
libnandfs First pass through library packaging. 2016-02-04 21:16:35 +00:00
libnetbsd First pass through library packaging. 2016-02-04 21:16:35 +00:00
libnetgraph First pass through library packaging. 2016-02-04 21:16:35 +00:00
libngatm First pass through library packaging. 2016-02-04 21:16:35 +00:00
libnv MFH 2016-03-10 21:16:01 +00:00
libopenbsd First pass through library packaging. 2016-02-04 21:16:35 +00:00
libopie First pass through library packaging. 2016-02-04 21:16:35 +00:00
libpam MFH 2016-04-16 02:32:12 +00:00
libpcap MFH 2016-03-02 16:14:46 +00:00
libpe DIRDEPS_BUILD: Update dependencies. 2016-02-16 02:14:30 +00:00
libpjdlog MFH 2016-03-02 16:14:46 +00:00
libpmc MFH 2016-03-02 16:14:46 +00:00
libproc MFH 2016-03-10 21:16:01 +00:00
libprocstat First pass through library packaging. 2016-02-04 21:16:35 +00:00
libradius First pass through library packaging. 2016-02-04 21:16:35 +00:00
librpcsec_gss First pass through library packaging. 2016-02-04 21:16:35 +00:00
librpcsvc MFH 2016-03-02 16:14:46 +00:00
librt MFH 2016-03-10 21:16:01 +00:00
librtld_db First pass through library packaging. 2016-02-04 21:16:35 +00:00
libsbuf First pass through library packaging. 2016-02-04 21:16:35 +00:00
libsdp First pass through library packaging. 2016-02-04 21:16:35 +00:00
libsm MFH 2016-03-02 16:14:46 +00:00
libsmb First pass through library packaging. 2016-02-04 21:16:35 +00:00
libsmdb MFH 2016-03-02 16:14:46 +00:00
libsmutil MFH 2016-03-02 16:14:46 +00:00
libsqlite3 First pass through library packaging. 2016-02-04 21:16:35 +00:00
libstand A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
libstdbuf First pass through library packaging. 2016-02-04 21:16:35 +00:00
libstdthreads First pass through library packaging. 2016-02-04 21:16:35 +00:00
libsysdecode MFH 2016-04-04 23:55:32 +00:00
libtacplus First pass through library packaging. 2016-02-04 21:16:35 +00:00
libtelnet First pass through library packaging. 2016-02-04 21:16:35 +00:00
libthr MFH 2016-04-16 02:32:12 +00:00
libthread_db First pass through library packaging. 2016-02-04 21:16:35 +00:00
libucl First pass through library packaging. 2016-02-04 21:16:35 +00:00
libufs First pass through library packaging. 2016-02-04 21:16:35 +00:00
libugidfw First pass through library packaging. 2016-02-04 21:16:35 +00:00
libulog First pass through library packaging. 2016-02-04 21:16:35 +00:00
libunbound MFH 2016-03-14 18:54:29 +00:00
libusb MFH 2016-04-11 15:24:59 +00:00
libusbhid MFH 2016-04-11 15:24:59 +00:00
libutil MFH 2016-03-14 18:54:29 +00:00
libvgl MFH 2016-04-13 16:19:50 +00:00
libvmmapi MFH 2016-02-22 12:28:23 +00:00
libwrap First pass through library packaging. 2016-02-04 21:16:35 +00:00
libxo MFH 2016-04-16 02:32:12 +00:00
liby First pass through library packaging. 2016-02-04 21:16:35 +00:00
libypclnt MFH 2016-04-16 02:32:12 +00:00
libz MFH 2016-04-04 23:55:32 +00:00
msun MFH 2016-04-16 02:32:12 +00:00
ncurses MFH 2016-04-16 02:32:12 +00:00
tests MFH 2016-03-10 21:16:01 +00:00
Makefile MFH 2016-03-14 18:54:29 +00:00
Makefile.inc