1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00
freebsd/sys/modules
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
..
3dfx
3dfx_linux
aac
accf_data
accf_dns
accf_http
acl_nfs4 Add module building Makefile entries for NFSv4 and POSIX.1e ACL handling. 2012-03-13 20:28:42 +00:00
acl_posix1e Add module building Makefile entries for NFSv4 and POSIX.1e ACL handling. 2012-03-13 20:28:42 +00:00
acpi Merge ACPICA 20120816. 2012-08-16 20:54:52 +00:00
ae
aesni style.Makefile(5) 2012-05-24 04:10:34 +00:00
age
agp A rewrite of the i810 bits of the agp(4) driver. New driver supports 2012-05-22 10:59:26 +00:00
aha
ahb
ahci Refactor enclosure manegement support in ahci(4). Move it out into separate 2012-07-26 13:44:48 +00:00
aic
aic7xxx
aio
alc
ale
alq
amdsbwd
amdtemp
amr
an
aout
apm
ar71xx
arcmsr
arcnet
asmc
asr
ata
ath Remove workaround for the clang 3.2 warning in ah_eeprom_9287.c, since 2012-08-29 18:14:20 +00:00
ath_ahb
ath_pci
auxio
bce
bfe
bge
bios Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to 2012-02-28 18:30:18 +00:00
bktr
bm
bridgestp
bwi Fix make depend. 2012-05-22 06:33:08 +00:00
bwn Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
bxe
cam Remove opt_enc.h from files committed with r235911. enc(4) is the 2012-07-30 03:00:58 +00:00
canbepm
canbus
cardbus
carp
cas
cbb
cc
cd9660
cd9660_iconv
ce
cfi
ciss
cm
cmx
coda
coda5
coff
coretemp
cp
cpsw Merging of projects/armv6, part 10 2012-08-15 06:31:32 +00:00
cpuctl
cpufreq
crypto
cryptodev
cs
ct Add a kernel module on pc98 for the ct(4) driver. 2012-09-06 18:02:32 +00:00
ctau
cx
cxgb - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
cxgbe Update interface to firmware 1.6.2 and include the firmware in the driver. 2012-09-13 06:32:52 +00:00
cyclic Jusy use i386 version of cyclic_machdep.c on all supported architectures. 2012-03-24 05:16:26 +00:00
dc
dcons
dcons_crom
de
digi
dpms
dpt
drm Add MK_SOURCELESS build option. Setting MK_SOURCELESS to "no" will disable 2012-02-04 00:54:43 +00:00
drm2 Add drm and i915 ioctl translations for 32 bit process on 64 bit host. 2012-08-18 18:26:25 +00:00
dtrace The dtnfsclient module dependency should only be added if the old NFS 2012-09-01 07:35:16 +00:00
dummynet o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ed
elink
em Add a source file needed for module linking. 2012-07-06 20:14:27 +00:00
en
ep
epic
esp
et
ex
exca
ext2fs
fatm
fdc
fdescfs
fe
filemon Add the 'filemon' device. 'filemon' is a kernel module that provides a device 2012-06-04 22:54:19 +00:00
firewire
firmware
fxp
gem
geom Add to GEOM RAID class module, supporting the DDF metadata format, as 2012-04-30 17:53:02 +00:00
glxiic
glxsb
gpio
hatm
hifn
hme
hpfs
hpt27xx When building with clang, disable -Wformat-security for 2012-02-21 21:20:52 +00:00
hptiop
hptmv
hptrr
hwpmc Add software PMC support. 2012-03-28 20:58:30 +00:00
i2c
ibcs2
ichwd
ida
ie
if_bridge
if_disc
if_edsc
if_ef
if_epair
if_faith
if_gif
if_gre
if_lagg
if_ndis
if_stf
if_tap
if_tun
if_vlan
igb Sync with Intel internal source: 2012-07-05 20:26:57 +00:00
iir
io
ip6_mroute_mod
ip_mroute_mod
ipdivert Fix 'make depend'. 2012-02-16 21:57:50 +00:00
ipfilter
ipfw o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ipfw_nat o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ipmi
ips Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
ipw
ipwfw
isci Remove explicit CC assignment in isci(4) Makefile to allow for building 2012-02-09 17:50:24 +00:00
iscsi Fix build. 2012-04-20 04:40:39 +00:00
isp
ispfw
iwi
iwifw
iwn
iwnfw
ixgb
ixgbe Unbreak make depend. 2012-05-30 13:55:43 +00:00
jme
joy
kbdmux
kgssapi Consistently set RPCGEN_CPP when running rpcgen, so the C preprocessor 2012-02-07 09:27:07 +00:00
kgssapi_krb5 Consistently set RPCGEN_CPP when running rpcgen, so the C preprocessor 2012-02-07 09:27:07 +00:00
khelp
krpc
ksyms
le
lge
libalias
libiconv
libmbpool
libmchain
lindev
linprocfs
linsysfs
linux Fix make depend 2012-05-06 11:41:00 +00:00
lmc
lpt
mac_biba
mac_bsdextended
mac_ifoff
mac_lomac
mac_mls
mac_none
mac_partition
mac_portacl
mac_seeotheruids
mac_stub
mac_test
malo
mcd
md
mem
mfi MFhead_mfi r227068 2012-03-30 23:05:48 +00:00
mii Merging of projects/armv6, part 5 2012-08-15 04:03:55 +00:00
mlx
mlx4 Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mlx4ib Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mlxen Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mly
mmc
mmcsd o Fixes: 2012-04-21 01:51:16 +00:00
mps Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
mpt
mqueue
msdosfs
msdosfs_iconv
mse
msk
mthca Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mvs
mwl Fix make depend. 2012-05-01 07:38:40 +00:00
mwlfw
mxge
my
nand Add nand core module and module dependency information. 2012-06-26 18:08:03 +00:00
nandfs Import work done under project/nand (@235533) into head. 2012-05-17 10:11:18 +00:00
nandsim Import work done under project/nand (@235533) into head. 2012-05-17 10:11:18 +00:00
ncp
ncv
ndis
netgraph Use rt_numfibs variable instead of compile-time RT_NUMFIBS. 2012-03-13 11:08:40 +00:00
netmap add support to build netmap as a module, 2012-05-29 19:55:07 +00:00
nfe
nfs_common
nfscl
nfsclient
nfscommon
nfsd
nfslock
nfslockd
nfsserver
nfssvc
nge
nmdm
nsp
ntfs
ntfs_iconv
nullfs
nvd Add nvme(4) and nvd(4) Makefiles to the tree. 2012-09-17 19:58:02 +00:00
nve
nvme Add nvme(4) and nvd(4) Makefiles to the tree. 2012-09-17 19:58:02 +00:00
nvram
nwfs
nxge
oce Depend on the relevant header files. 2012-02-11 08:34:33 +00:00
opensolaris
padlock
patm
pccard
pcfclock
pcn
pf o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
pflog o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
pfsync o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
plip
pmc
portalfs
powermac_nvram
ppbus
ppc
ppi
pps
procfs
pseudofs
pst
pty
puc
qlxgb
ral Add support for Ralink RT2800/RT3000 chipsets. 2012-05-10 17:41:16 +00:00
ralfw Update the rt2860's firmware and add a Makefile for the module. While 2012-03-13 21:25:25 +00:00
random Add support for new Intel on-CPU Bull Mountain random number 2012-09-05 13:18:51 +00:00
rc
rc4
rdma Fix 'make depend'. 2012-06-25 09:46:06 +00:00
re
reiserfs
rl
rndtest
rp
runfw
s3
safe
sbni
scc Fix the scc(4) module build. Without the file it's missing a required symbol. 2012-02-26 13:27:22 +00:00
scd
scsi_low Remove scsi_low_pisa.c from the module Makefile to keep in line 2012-09-10 21:57:40 +00:00
sdhci
sem
send
sf
sfxge
sge
siba_bwn
siftr
siis
sio
sis
sk
smbfs
sn
snc
snp
sound Add driver for the RME HDSPe AIO/RayDAT sound cards -- snd_hdspe(4). 2012-03-01 13:10:18 +00:00
speaker
splash
sppp
ste
stg
stge
streams
svr4
sym
syscons
sysvipc
ti
tl
tmpfs
toecore Fix 'make depend'. 2012-06-25 09:46:06 +00:00
tpm
trm
twa
twe
tws
tx
txp
uart Compensate for the replacement of uart_cpu_{amd64|i386}.c with 2012-04-18 17:44:05 +00:00
ubsec
ubser
uchcom
ucycom
udf
udf_iconv
ufs
unionfs
usb Merging of projects/armv6, part 5 2012-08-15 04:03:55 +00:00
utopia
vesa
vge
viawd
virtio
vkbd
vpo
vr
vte
vx
vxge
wb
wbwd Provide wbwd(4), a driver for the watchdog timer found on various 2012-03-06 18:44:52 +00:00
wi Fix 'make depend'. 2012-02-16 21:57:50 +00:00
wlan Fix 'make depend'. 2012-02-16 21:57:50 +00:00
wlan_acl
wlan_amrr
wlan_ccmp
wlan_rssadapt
wlan_tkip
wlan_wep
wlan_xauth
wpi Fix make depend 2012-06-03 12:19:16 +00:00
wpifw
wtap
x86bios
xe
xfs Partially revert r239959, after actually fixing most of the clang 2012-09-02 14:46:18 +00:00
xl
zfs Add TRIM support. 2012-09-23 19:40:58 +00:00
zlib
Makefile Integrate nvme(4) and nvd(4) into the amd64 and i386 builds. 2012-09-17 19:26:33 +00:00
Makefile.inc