freebsd-skq/sys
glebius 163857deb4 New way to manage reference counting of mbuf external storage.
The m_ext.ext_cnt pointer becomes a union. It can now hold the refcount
value itself. To tell that m_ext.ext_flags flag EXT_FLAG_EMBREF is used.
The first mbuf to attach a cluster stores the refcount. The further mbufs
to reference the cluster point at refcount in the first mbuf. The first
mbuf is freed only when the last reference is freed.

The benefit over refcounts stored in separate slabs is that now refcounts
of different, unrelated mbufs do not share a cache line.

For EXT_EXTREF mbufs the zone_ext_refcnt is no longer needed, and m_extadd()
becomes void, making widely used M_EXTADD macro safe.

For EXT_SFBUF mbufs the sf_ext_ref() is removed, which was an optimization
exactly against the cache aliasing problem with regular refcounting.

Discussed with:		rrs, rwatson, gnn, hiren, sbruno, np
Reviewed by:		rrs
Differential Revision:	https://reviews.freebsd.org/D5396
Sponsored by:		Netflix
2016-03-01 00:17:14 +00:00
..
amd64 Bump VM_MAX_MEMSEGS from 2 to 3 to match the number of VM segment 2016-02-26 16:18:47 +00:00
arm Fix fdt_get_mem_regions() to work with 64-bit addresses 2016-02-29 09:22:39 +00:00
arm64 Restore ThunderX Pass1.1 PCI changes removed by r295962 2016-02-26 12:16:11 +00:00
boot userboot: use MK_CTF=no to disable CTF 2016-02-29 17:54:55 +00:00
bsm Merge from contrib/openbsm to bring the kernel audit bits up to date with OpenBSM 1.2 alpha 4: 2015-12-20 23:22:04 +00:00
cam Remove a stray else. It isn't needed (due to the return at the end of 2016-02-18 15:12:52 +00:00
cddl Removed unused label and fix mutex_exit order 2016-02-25 03:01:24 +00:00
compat Improve error handling for posix_fallocate(2) and posix_fadvise(2). 2016-02-25 19:58:23 +00:00
conf FAST_DEPEND: Prefer .OBJDIR depend files. 2016-02-29 21:10:47 +00:00
contrib Add support for the Freescale dTSEC DPAA-based ethernet controller. 2016-02-29 03:38:00 +00:00
crypto Break up opencrypto/xform.c so it can be reused piecemeal 2015-12-30 22:43:07 +00:00
ddb Add helper to catch single step debug event and distinguish it from bkpt 2015-11-27 19:03:59 +00:00
dev New way to manage reference counting of mbuf external storage. 2016-03-01 00:17:14 +00:00
fs Ext2: cleanup setting of ctime/mtime/birthtime. 2016-02-19 15:53:08 +00:00
gdb
geom Fixes to make it compile under gcc-4.2. 2016-02-24 02:52:49 +00:00
gnu Update our copy of the Linux dts files to be in sync with Linux 4.5-rc1. We 2016-02-09 16:42:32 +00:00
i386 Migrate many bus_alloc_resource() calls to bus_alloc_resource_anywhere(). 2016-02-27 03:38:01 +00:00
isa Replace several bus_alloc_resource() calls using default arguments with bus_alloc_resource_any() 2016-02-19 03:37:56 +00:00
kern New way to manage reference counting of mbuf external storage. 2016-03-01 00:17:14 +00:00
kgssapi kcrypto_aes: Use separate sessions for AES and SHA1 2016-02-02 00:14:51 +00:00
libkern libkern: ffs, fls: s/4/3/ the 3rd BSD clause 2015-10-22 21:04:47 +00:00
mips Fix fdt_get_mem_regions() to work with 64-bit addresses 2016-02-29 09:22:39 +00:00
modules Add modules support for the bhnd code. 2016-02-26 03:34:32 +00:00
net buf_ring/drbr: Add buf_ring_peek_clear_sc and use it in drbr_peek 2016-02-29 03:54:51 +00:00
net80211 Fix !IEEE80211_DEBUG build. 2016-02-29 23:09:31 +00:00
netgraph Migrate many bus_alloc_resource() calls to bus_alloc_resource_anywhere(). 2016-02-27 03:38:01 +00:00
netinet Fix build after r29592. 2016-02-23 21:21:47 +00:00
netinet6 New way to manage reference counting of mbuf external storage. 2016-03-01 00:17:14 +00:00
netipsec Fix useless check. m_pkthdr.len should be equal to orglen. 2016-02-24 12:28:49 +00:00
netnatm
netpfil pf: Fix possible out-of-bounds write 2016-02-25 07:33:59 +00:00
netsmb The problem report was for a crash that happened when smbfs was 2015-11-18 23:04:01 +00:00
nfs MFP r287070,r287073: split radix implementation and route table structure. 2016-01-25 06:33:15 +00:00
nfsclient
nfsserver
nlm
ofed LinuxKPI list updates: 2016-01-26 15:12:31 +00:00
opencrypto Break up opencrypto/xform.c so it can be reused piecemeal 2015-12-30 22:43:07 +00:00
pc98 Migrate many bus_alloc_resource() calls to bus_alloc_resource_anywhere(). 2016-02-27 03:38:01 +00:00
powerpc Add support for the Freescale dTSEC DPAA-based ethernet controller. 2016-02-29 03:38:00 +00:00
riscv Fix fdt_get_mem_regions() to work with 64-bit addresses 2016-02-29 09:22:39 +00:00
rpc These files were getting sys/malloc.h and vm/uma.h with header pollution 2016-02-01 17:41:21 +00:00
security Busy the mount point which is the owner of the audit vnode, around 2016-01-16 10:06:33 +00:00
sparc64 As <machine/pmap.h> is included from <vm/pmap.h>, there is no need to 2016-02-22 09:02:20 +00:00
sys New way to manage reference counting of mbuf external storage. 2016-03-01 00:17:14 +00:00
teken
tests Style 9 changes. 2015-11-12 10:31:14 +00:00
tools Fix MFS builds when both MD_ROOT_SIZE and MFS_IMAGE are specified 2016-02-02 07:02:51 +00:00
ufs The UFS filesystem requires that the last block of a file always be 2016-02-24 01:58:40 +00:00
vm Implement process-shared locks support for libthr.so.3, without 2016-02-28 17:52:33 +00:00
x86 Silence PVS-Studio warning (V595). It can never be NULL here. 2016-02-23 23:57:24 +00:00
xdr
xen xenbus: add a comment with the names of the generated accessors 2016-01-15 14:34:31 +00:00
Makefile Add riscv to the list of architectures for cscope. 2016-02-29 16:39:27 +00:00