freebsd-nq/sys/boot/common
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
..
bcache.c A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
boot.c
bootstrap.h A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
commands.c
console.c Prevent loader.conf load failure due to unknown console entries 2016-01-21 15:27:44 +00:00
crc32.c
crc32.h
dev_net.c If the dhcp server provided an interface-mtu option, transcribe the value 2016-03-21 15:06:50 +00:00
dev_net.h Refactor net_getparams() to make it easier to get params from sources other 2015-05-18 15:46:43 +00:00
devopen.c
disk.c A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
disk.h Implement GELI (AES-XTS and AES-CBC only) in gptboot and gptzfsboot 2016-03-16 23:12:19 +00:00
gpt.c Implement GELI (AES-XTS and AES-CBC only) in gptboot and gptzfsboot 2016-03-16 23:12:19 +00:00
gpt.h Implement GELI (AES-XTS and AES-CBC only) in gptboot and gptzfsboot 2016-03-16 23:12:19 +00:00
help.common
install.c Change the order of the arguments to file_loadraw(). They were swapped 2014-11-01 18:51:48 +00:00
interp_backslash.c
interp_forth.c Improve non-interactive forth cmd error reporting 2016-01-13 18:33:12 +00:00
interp_parse.c
interp.c Give loaders more control over the Forth initialization process. In 2014-07-27 16:12:51 +00:00
isapnp.c
isapnp.h
load_elf32_obj.c
load_elf32.c
load_elf64_obj.c
load_elf64.c
load_elf_obj.c Use the ABI-prescribed name for SHT_X86_64_UNWIND in the loader and 2016-04-08 10:23:48 +00:00
load_elf.c Don't set the offset when loading the kernel on the arm loader.efi. The 2016-02-09 09:39:30 +00:00
loader.8 Document loader(8) dumpdev option 2015-11-18 09:42:36 +00:00
ls.c
Makefile Install loader(8) and zfsloader(8) only once 2015-06-19 05:42:24 +00:00
Makefile.depend META MODE: Update dependencies with 'the-lot' and add missing directories. 2015-12-01 05:23:19 +00:00
Makefile.inc Fix ubldr build failure on mipsn32 and mipsn32el targets. 2016-03-04 05:36:53 +00:00
md.c A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
merge_help.awk
misc.c Enable warnings in EFI boot code 2016-01-12 02:17:39 +00:00
module.c A new implementation of the loader block cache 2016-04-18 23:09:22 +00:00
newvers.sh Make vers.c creation atomic by using a temporary file, then moving 2015-10-24 21:59:58 +00:00
panic.c
part.c Cleanup unnecessary semicolons from the kernel. 2016-04-10 23:07:00 +00:00
part.h
paths.h Fix mistake when transitioning to the new defines with ZFS loader. I 2016-01-27 16:36:18 +00:00
pnp.c
rbx.h RBX_ defines are in rbx.h, move it there. 2016-01-26 06:26:44 +00:00
reloc_elf32.c
reloc_elf64.c
reloc_elf.c
self_reloc.c Enable warnings in EFI boot code 2016-01-12 02:17:39 +00:00
ufsread.c Fix EFI UFS caching 2016-01-21 08:58:39 +00:00
util.c
util.h
zfsloader.8 Misc mdoc fixes: 2014-11-23 21:00:00 +00:00