freebsd-dev/lib
Toomas Soome 3949295f36 libstand/dosfs: cache FAT32 in 128 Kb blocks to save loader memory
Current implementation of dosfs in libstand reads full File Allocation Table to
the RAM in the initialization code. In the extreme case of FAT32 filesystem,
this structure will take up to 256-1024 Mb of loader memory, depending on the
cluster size.

Proposed patch reduces libstands/dosfs memory requirements to 128 Kb for all
variants of dosfs filesystem. For FAT12 and FAT16 filesystems, File Allocation
Table is cached in full, as before. For FAT32, File Allocation Table is broken
into the equal blocks of 128 Kilobytes (32768 entries), and only current block
is cached.

Because per-filesystem context is now small, global FAT cache (for all
instances of dosfs filesystem) is replaced by local per-instance cache.

Submitted by:	Mikhail.Kupchik_gmail.com
Reviewed by:	tsoome, allanjude
Differential Revision:	https://reviews.freebsd.org/D9547
2017-04-06 20:12:39 +00:00
..
atf Don't bake all of CC/CPP/CXX into CFLAGS 2016-09-01 02:42:11 +00:00
clang Update clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0 release. 2017-03-10 19:02:41 +00:00
csu Clang in base now supports -mlongcall, so remove this hack 2017-03-07 02:17:38 +00:00
lib80211 [lib80211] add VHT bands and channel flags. 2017-01-07 01:56:10 +00:00
libalias Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:34:59 +00:00
libarchive MFV r316083,316094: 2017-03-28 10:39:17 +00:00
libauditd Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:55:21 +00:00
libbegemot Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:55:43 +00:00
libblacklist DIRDEPS_BUILD: Connect new directories and update dependencies. 2016-06-03 19:25:30 +00:00
libblocksruntime Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:56:10 +00:00
libbluetooth Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:56:42 +00:00
libbsdstat Fix off by one error in index limit calculation 2016-05-16 15:42:59 +00:00
libbsm Merge OpenBSM 1.2-alpha5 from vendor branch to FreeBSD -CURRENT: 2017-03-26 21:14:49 +00:00
libbsnmp Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:57:52 +00:00
libbz2 Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 03:58:50 +00:00
libc Implement the memset_s(3) function as specified by the C11 ISO/IEC 2017-03-30 04:57:26 +00:00
libc_nonshared Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:04:25 +00:00
libc++ Belatedly add variant.cpp to libc++. This completes the support for the 2017-02-19 14:53:59 +00:00
libcalendar First pass through library packaging. 2016-02-04 21:16:35 +00:00
libcam Use __FBSDID instead of the license agreement to embed the $FreeBSD$ RCS keyword 2017-04-06 05:36:35 +00:00
libcapsicum capsicum_helpers: Add LOOKUP flag 2016-12-16 01:37:44 +00:00
libcasper In libcasper, prefer to send a function index or service name over the IPC 2017-03-23 14:35:21 +00:00
libclang_rt Merge ^/head r312968 through r313054. 2017-02-01 21:21:01 +00:00
libcom_err Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:51:36 +00:00
libcompat Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
libcompiler_rt Add an implementation of __ffssi2() derived from __ffsdi2(). 2017-04-05 02:40:53 +00:00
libcrypt Increase WARNS for libcrypt tests 2017-03-11 00:07:04 +00:00
libcuse libcuse: make more use of the howmany() macro when available. 2016-04-26 01:20:16 +00:00
libcxxrt Surround any unmangled C++ names in libcxxrt's version map with 'extern 2017-02-22 18:44:57 +00:00
libdevctl Implement 'devctl clear driver' to undo a previous 'devctl set driver'. 2016-08-29 22:48:36 +00:00
libdevdctl Use .CURDIR:H instead of .CURDIR to simplify pathing in output, etc 2017-01-20 04:55:14 +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 Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:54:21 +00:00
libedit MFV 312999: 2017-01-30 23:00:51 +00:00
libefivar Fix a coverity-discovered NULL pointer dereference. 2017-03-23 02:30:57 +00:00
libelf Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:54:09 +00:00
libelftc Install the lib/libelftc manpages 2016-12-17 03:34:51 +00:00
libevent [private] add libevent1 and sqlite3 include files for our private libraries. 2017-03-27 22:34:43 +00:00
libexecinfo Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:53:40 +00:00
libexpat Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:53:45 +00:00
libfetch r308996 broke IP literals by assuming that a colon could only occur as 2017-03-17 14:18:52 +00:00
libfigpar MFH 2016-03-02 16:14:46 +00:00
libgcc_eh libcc_{s,eh}: build without SSP 2016-11-11 23:28:07 +00:00
libgcc_s Apply r315689 to lib/libgcc_s as well to unbreak the gcc xtoolchain build 2017-03-28 19:01:01 +00:00
libgeom First pass through library packaging. 2016-02-04 21:16:35 +00:00
libgpio Use GPIOTOGGLE to toggle the pin state instead of read, modify and write. 2016-04-19 15:18:31 +00:00
libgssapi Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:53:20 +00:00
libiconv_modules Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:53:26 +00:00
libifconfig Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
libipsec Fix two CURDIR references in comments that should be SRCTOP 2017-03-12 18:59:05 +00:00
libjail Fix libjail reached latest sysctl entry. 2016-10-02 11:56:17 +00:00
libkiconv Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:50:46 +00:00
libkvm lib/libkvm: start adding basic tests for kvm(3) 2017-03-28 17:37:49 +00:00
libldns Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:50:19 +00:00
liblzma Use SRCTOP-relative paths and .CURDIR with :H instead of ".." specified paths 2017-01-20 04:46:20 +00:00
libmagic Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:45:09 +00:00
libmd Fix bootstrapping libmd on older systems after r314709. 2017-03-06 21:06:55 +00:00
libmemstat Fix buildworld for powerpc. 2016-11-20 06:10:12 +00:00
libmilter Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:42:43 +00:00
libmp Increase WARNS for libmp tests 2017-03-11 00:08:11 +00:00
libmt Add the density code for LTO-7 to libmt and the mt(1) man page. 2016-05-20 19:30:52 +00:00
libnandfs First pass through library packaging. 2016-02-04 21:16:35 +00:00
libnetbsd libnetbsd: add emalloc and friends 2017-04-06 14:36:08 +00:00
libnetgraph First pass through library packaging. 2016-02-04 21:16:35 +00:00
libngatm Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:41:53 +00:00
libnv Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:40:55 +00:00
libopenbsd First pass through library packaging. 2016-02-04 21:16:35 +00:00
libopie Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:40:10 +00:00
libpam Add options to capture stdout and / or stderr and pass the output on 2017-03-22 13:16:04 +00:00
libpathconv Fix two CURDIR references in comments that should be SRCTOP 2017-03-12 18:59:05 +00:00
libpcap Stop installing pcap-int.h, which is the internal interface for libpcap. 2017-03-07 16:06:53 +00:00
libpe Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:37:03 +00:00
libpjdlog MFH 2016-03-02 16:14:46 +00:00
libpmc Fix typo. 2017-04-03 20:35:17 +00:00
libproc Add initializations missed in r315728. 2017-03-22 18:33:29 +00:00
libprocstat Reorder includes to placate MIPS build. 2017-03-30 20:42:16 +00:00
libradius The NAS-Identifier attribute is a string, not an integer. 2016-05-24 11:44:43 +00:00
librpcsec_gss Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:36:48 +00:00
librpcsvc Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:36:28 +00:00
librss librss: simplify some NULL checks. 2017-02-27 00:10:00 +00:00
librt Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:36:06 +00:00
librtld_db Avoid double-closing an fd if elf_begin() fails. 2017-03-22 18:14:55 +00:00
libsbuf Use __FBSDID instead of the license agreement to embed the $FreeBSD$ RCS keyword 2017-04-06 05:36:35 +00:00
libsdp lib: minor spelling fixes in comments. 2016-05-01 19:37:33 +00:00
libsm Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:35:36 +00:00
libsmb Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:35:00 +00:00
libsmdb Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:35:18 +00:00
libsmutil Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:34:34 +00:00
libsqlite3 [private] add libevent1 and sqlite3 include files for our private libraries. 2017-03-27 22:34:43 +00:00
libstand libstand/dosfs: cache FAT32 in 128 Kb blocks to save loader memory 2017-04-06 20:12:39 +00:00
libstdbuf First pass through library packaging. 2016-02-04 21:16:35 +00:00
libstdthreads Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:33:45 +00:00
libsysdecode Fix libsysdecode vmprot flag decoding 2017-03-16 20:55:00 +00:00
libtacplus First pass through library packaging. 2016-02-04 21:16:35 +00:00
libtelnet Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:32:36 +00:00
libthr Add clock_nanosleep() 2017-03-19 00:51:12 +00:00
libthread_db Preserve VFP state across signal delivery. 2017-03-26 08:36:56 +00:00
libucl Use SRCTOP to find the sources of libucl 2016-10-15 13:17:27 +00:00
libufs Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:30:05 +00:00
libugidfw First pass through library packaging. 2016-02-04 21:16:35 +00:00
libulog Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:29:23 +00:00
libunbound Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:31:19 +00:00
libusb Fix libusb20_dev_get_desc(3) to use the "vendor product" order, not 2016-10-22 14:37:13 +00:00
libusbhid Sync ^/vendor/NetBSD/tests/dist with upstream 2017-01-12 07:26:39 +00:00
libutil Document sbuf_hexdump(9) in just sbuf(9) 2017-03-21 19:10:07 +00:00
libvgl MFH 2016-04-13 16:19:50 +00:00
libvmmapi Capsicum support for bhyve(8). 2017-02-14 13:35:59 +00:00
libwrap Use SRCTOP instead of .CURDIR-relative path in .PATH directive 2017-01-18 18:14:50 +00:00
libxo The relative symlink fix causes downstream issues for 2017-03-07 06:11:36 +00:00
liby Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
libypclnt Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:28:41 +00:00
libz MFV r311279: zlib 1.2.10. 2017-01-04 16:09:08 +00:00
msun Replace SOFTFLOAT with __mips_soft_float, which gcc/clang define for us. 2017-03-16 21:05:21 +00:00
ncurses Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
tests Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed 2016-05-04 23:20:53 +00:00
Makefile Fix typo in lib/Makefile 2017-01-28 23:51:03 +00:00
Makefile.inc