opnsense-src/sys
Pawel Jakub Dawidek bcb77be2b7 Add TRIM support.
The code builds a map of regions that were freed. On every write the
code consults the map and eventually removes ranges that were freed
before, but are now overwritten.

Freed blocks are not TRIMed immediately. There is a tunable that defines
how many txg we should wait with TRIMming freed blocks (64 by default).

There is a low priority thread that TRIMs ranges when the time comes.
During TRIM we keep in-flight ranges on a list to detect colliding
writes - we have to delay writes that collide with in-flight TRIMs in
case something will be reordered and write will reached the disk before
the TRIM. We don't have to do the same for in-flight writes, as
colliding writes just remove ranges to TRIM.

Sponsored by:	multiplay.co.uk

This work includes some important fixes and some improvements obtained
from the zfsonlinux project, including TRIMming entire vdevs on pool
create/add/attach and on pool import for spare and cache vdevs.

Obtained from:	zfsonlinux
Submitted by:	Etienne Dechamps <etienne.dechamps@ovh.net>
2012-09-23 19:40:58 +00:00
..
amd64 After r205013, amd64 and i386 CPU family and model IDs were printed out 2012-09-21 10:31:19 +00:00
arm Fix a typo in a Broadcom initarm debug printf 2012-09-23 08:49:41 +00:00
boot MFi386: revision 240637 2012-09-23 08:50:54 +00:00
bsm Add ECAPMODE, "Not permitted in capability mode", a new kernel errno 2011-03-01 13:14:28 +00:00
cam Fix a panic when trying to play invalid audio tracks. 2012-09-19 18:42:31 +00:00
cddl Add TRIM support. 2012-09-23 19:40:58 +00:00
compat Remove redundant check 2012-09-12 10:12:03 +00:00
conf Improve the check for p4 opened files. 2012-09-22 07:44:36 +00:00
contrib Use M_NOWAIT in wtab_alloc(), too. Convert panic() to 2012-09-22 18:47:14 +00:00
crypto Add support for the extended FPU states on amd64, both for native 2012-01-21 17:45:27 +00:00
ddb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
dev DWC OTG host mode improvements. Add support for the 3-strikes and you are 2012-09-23 12:19:19 +00:00
fs Modify the NFSv4 client so that it can handle owner 2012-09-20 02:49:25 +00:00
gdb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
geom Use the topology lock to protect list of providers while withering them. 2012-09-22 12:41:49 +00:00
gnu/fs Add VFCF_READONLY flag that indicates ntfs and xfs file systems are 2012-09-12 03:42:52 +00:00
i386 After r205013, amd64 and i386 CPU family and model IDs were printed out 2012-09-21 10:31:19 +00:00
ia64 userret() already checks for td_locks when INVARIANTS is enabled, so 2012-09-08 18:27:11 +00:00
isa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
kern Do not skip two elements of the tid_buffer when reusing the buffer 2012-09-22 12:17:09 +00:00
kgssapi Add missing break statement to make sure all 3DES etypes really are treated 2011-10-10 09:13:07 +00:00
libkern s/ is is / is /g 2012-09-14 22:00:03 +00:00
mips Prefer __containerof() above member2struct(). 2012-09-15 19:28:54 +00:00
modules Add TRIM support. 2012-09-23 19:40:58 +00:00
net Convert lagg(4) to use if_transmit instead of if_start. 2012-09-20 10:05:10 +00:00
net80211 Fix a crash bug introduced in the iterate node work recently done. 2012-09-16 22:45:00 +00:00
netatalk Fix typos 2012-02-28 15:07:05 +00:00
netgraph o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
netinet Whitespace change. 2012-09-23 07:43:10 +00:00
netinet6 Merge the projects/pf/head branch, that was worked on for last six months, 2012-09-08 06:41:54 +00:00
netipsec Add missing break 2012-09-18 08:00:43 +00:00
netipx Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
netnatm
netncp Add characters mapping for codepages used in Germany. 2012-06-01 03:59:08 +00:00
netpfil EBUSY is a better reply for refusing to unload pf(4) or pfsync(4). 2012-09-22 19:03:11 +00:00
netsmb Change a duplicated check to clarify that we really want to set a 2012-07-10 21:02:59 +00:00
nfs - Typo fix 2012-08-16 19:22:34 +00:00
nfsclient Do not leave invalid pages in the object after the short read for a 2012-08-14 11:45:47 +00:00
nfsserver Honor NFSv3 commit call (RFC 1813, Section 3.3.21) where when count is 0, 2011-12-15 02:26:53 +00:00
nlm Fix grammar. 2012-08-16 13:01:56 +00:00
ofed Align the PCI Express #defines with the style used for the PCI-X 2012-09-18 22:04:59 +00:00
opencrypto Add the fo_chown and fo_chmod methods to struct fileops and use them 2011-08-16 20:07:47 +00:00
pc98 MFi386: revision 237445 2012-09-23 09:13:57 +00:00
pci intpm: add ATI IXP400 pci id 2012-04-16 10:33:46 +00:00
powerpc Move the prototype for savectx from cpu.h to pcb.h, as it is on other 2012-09-23 17:33:16 +00:00
rpc Fix RPC headers for C++ 2012-09-02 21:04:40 +00:00
security Check vplabel for NULL before dereferencing it. Fixes a panic 2012-05-03 15:51:34 +00:00
sparc64 Correct double "the the" 2012-09-14 21:28:56 +00:00
sys Add rounddown2() macro similar to the roundup2() macro. 2012-09-22 17:49:25 +00:00
teken Link the demo application against ncursesw to make Unicode work. 2011-10-13 14:20:27 +00:00
tools Make vnode_if.awk parse vnode operations with underscores, like VOP_FOO_BAR. 2012-02-21 19:35:59 +00:00
ufs Remove unused member of struct indir (in_exists) from UFS and EXT2 code. 2012-08-17 17:45:27 +00:00
vm Address a race condition that was introduced in r238212. Unless the page 2012-09-23 17:42:39 +00:00
x86 Allow static DMA allocations that allow for enough segments to do page-sized 2012-08-17 14:14:25 +00:00
xdr
xen blkif interface comment cleanups. No functional changes 2012-02-29 17:47:01 +00:00
Makefile Add sys/ofed to the 'make cscope' target. 2012-03-20 18:05:15 +00:00