freebsd-skq/sys
markj 3ce6f385ad Allow allocations across meta boundaries.
Remove restrictions that prevent allocation requests to cross the
boundary between two meta nodes.

Replace the bmu_avail field in meta nodes with a bitmap that identifies
which subtrees have some free memory, and iterate over the nonempty
subtrees only in blst_meta_alloc.  If free memory is scarce, this should
make searching for it faster.

Put the code for handling the next-leaf allocation in a separate
function.  When taking blocks from the next leaf empties the leaf, be
sure to clear the appropriate bit in its parent, and so on, up to the
least-common ancestor of this leaf and the next.

Eliminate special terminator nodes, and rely instead on the fact that
there is a 0-bit at the end of the bitmask at the root of the tree that
will stop a meta_alloc search, or a next-leaf search, before the search
falls off the end of the tree. Make sure that the tree is big enough to
have space for that 0-bit.

Eliminate special all-free indicators.  Lazy initialization of subtrees
stands in the way of having an allocation span a meta-node boundary, so
a subtree of all free blocks is not treated specially.  Subtrees of
all-allocated blocks are still recognized by looking at the bitmask at
the root and finding 0.

Don't print all-allocated subtrees.  Do print the bitmasks for meta
nodes, when tree-printing.

Submitted by:	Doug Moore <dougm@rice.edu>
Reviewed by:	alc
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D12635
2018-11-13 18:40:01 +00:00
..
amd64 Add evdev support to amd64 and i386 kernels 2018-11-12 21:01:28 +00:00
arm use -m ${LD_EMULATION} for binary->elf link invocation 2018-11-09 19:16:01 +00:00
arm64 Drop the legacy ELF brandinfo for the old rtld from arm64 and riscv. 2018-11-07 18:28:55 +00:00
bsm
cam Only assert locked for many async events. 2018-11-05 18:47:29 +00:00
cddl Do not ignore arc_adjust() return value. 2018-11-10 01:58:37 +00:00
compat Regen after r340302: Fix freebsd32 mknod(at). 2018-11-09 21:02:07 +00:00
conf dtb.mk: Fix passing of ECHO to make_dtb{,o}.sh 2018-11-12 17:10:44 +00:00
contrib Octeon SDK: avoid use of uninitialized variable 2018-11-09 19:17:25 +00:00
crypto rijndael (AES): Avoid leaking sensitive data on kernel stack 2018-10-26 20:53:01 +00:00
ddb ddb: Enable 'thread <address>' 2018-10-20 20:45:49 +00:00
dev cxgbe/netmap: Fix cxgbe netmap when interface is DOWN 2018-11-12 17:57:12 +00:00
dts Fix test-dts{,o} targets 2018-11-12 22:18:11 +00:00
fs Change nfs_advlock() so that the NFSVOPUNLOCK() is mostly done at the end. 2018-11-06 22:50:50 +00:00
gdb
geom Revert r340187, it breaks EOD (end-of-device) detection logic. Turns out, 2018-11-07 16:28:09 +00:00
gnu Update our devicetree to 4.19 for arm and arm64 2018-11-10 21:02:32 +00:00
i386 Add evdev support to amd64 and i386 kernels 2018-11-12 21:01:28 +00:00
isa Reapply, with minor tweaks, r338025, from the original commit: 2018-09-26 17:12:14 +00:00
kern Allow allocations across meta boundaries. 2018-11-13 18:40:01 +00:00
kgssapi OpenCrypto: Convert sessions to opaque handles instead of integers 2018-07-18 00:56:25 +00:00
libkern mcount: tidy up ANSIfication 2018-10-20 22:39:35 +00:00
mips Add a KPI for the delay while spinning on a spin lock. 2018-11-05 21:34:17 +00:00
modules Retire CLANG_NO_IAS34 2018-11-01 23:11:47 +00:00
net Fix rxcsum issue introduced in r338838 2018-11-07 19:31:48 +00:00
net80211 Fix misspellings of transmitter/transmitted 2018-08-10 20:37:32 +00:00
netgraph Make ng_pptpgre(8) netgraph node be able to restore order for packets 2018-11-04 19:10:44 +00:00
netinet Ensure that IP fragments do not extend beyond IP_MAXPACKET. 2018-11-10 03:00:36 +00:00
netinet6 Add ability to use dynamic external prefix in ipfw_nptv6 module. 2018-11-12 11:20:59 +00:00
netipsec Add sadb_x_sa2 extension to SADB_ACQUIRE requests. 2018-10-21 14:19:16 +00:00
netpfil Add ability to use dynamic external prefix in ipfw_nptv6 module. 2018-11-12 11:20:59 +00:00
netsmb Make timespecadd(3) and friends public 2018-07-30 15:46:40 +00:00
nfs Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
nfsclient
nfsserver
nlm
ofed Introduce and use sgid_index in CM requests in ibcore. 2018-09-09 07:20:15 +00:00
opencrypto Add sha224 to the authctx union. 2018-10-23 18:07:37 +00:00
powerpc powerpc64: reduce GENERIC64 diff versus amd64 GENERIC 2018-11-13 09:19:07 +00:00
riscv RISC-V: Implement get_cyclecount(9). 2018-11-13 18:20:27 +00:00
rpc Set SO_SNDTIMEO in the client side krpc when CLSET_TIMEOUT is done. 2018-07-20 12:03:16 +00:00
security Add const to input-only char * arguments. 2018-11-02 20:50:22 +00:00
sparc64 Add a KPI for the delay while spinning on a spin lock. 2018-11-05 21:34:17 +00:00
sys Allow allocations across meta boundaries. 2018-11-13 18:40:01 +00:00
teken Implement ECMA-48 "REP", some Linuxen have started emitting them recently. 2018-10-21 08:29:36 +00:00
tests epoch_test: fix compile 2018-07-15 00:31:17 +00:00
tools Use ${ECHO} in dtb/dtbo build, pass in from dtb.mk for -s 2018-11-09 18:56:40 +00:00
ufs Make vop_symlink take a const target path. 2018-11-02 14:42:36 +00:00
vm Re-apply r336984, reverting r339934. 2018-11-10 20:33:08 +00:00
x86 Apply fix to un-cripple max cpu id on BSP earlier. 2018-11-12 19:17:26 +00:00
xdr
xen xen: legacy PVH fixes for the new interrupt count 2018-09-13 07:14:11 +00:00
Makefile