mirror_zfs/module/os/linux/zfs
Jorgen Lundman 035219ee10 Fix abd leak, kmem_free correct size of abd_t
Fix a leak of abd_t that manifested mostly when using
raidzN with at least as many columns as N (e.g. a
four-disk raidz2 but not a three-disk raidz2).
Sufficiently heavy raidz use would eventually run a system
out of memory.

Additionally:

* Switch abd_cache arena to FIRSTFIT, which empirically
improves perofrmance.

* Make abd_chunk_cache more performant and debuggable.

* Allocate the abd_zero_buf from abd_chunk_cache rather
than the heap.

* Don't try to reap non-existent qcaches in abd_cache arena.

* KM_PUSHPAGE->KM_SLEEP when allocating chunks from their
own arena

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Jorgen Lundman <lundman@lundman.net>
Co-authored-by: Sean Doran <smd@use.net>
Closes #12295
2021-09-14 12:22:28 -07:00
..
abd_os.c Fix abd leak, kmem_free correct size of abd_t 2021-09-14 12:22:28 -07:00
arc_os.c Optimize small random numbers generation 2021-09-14 12:10:17 -07:00
Makefile.in Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
mmp_os.c Add zfs_multihost_interval tunable handler for FreeBSD 2020-06-23 13:32:42 -07:00
policy.c Linux 5.12 compat: idmapped mounts 2021-03-19 21:00:59 -07:00
qat_compress.c Fix QAT allocation failure return value 2020-01-06 11:17:53 -08:00
qat_crypt.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
qat.c QAT related bug fixes 2019-09-12 13:33:44 -07:00
spa_misc_os.c Make spa_history_zone platform-dependent in kernel 2020-03-02 09:43:30 -08:00
trace.c Enable use of DTRACE_PROBE* macros in "spl" module 2019-11-01 13:13:43 -07:00
vdev_disk.c Linux 5.12 update: bio_max_segs() replaces BIO_MAX_PAGES 2021-03-19 22:33:42 -07:00
vdev_file.c Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
zfs_acl.c Intentionally allow ZFS_READONLY in zfs_write 2021-03-07 09:31:52 -08:00
zfs_ctldir.c Linux: always check or verify return of igrab() 2021-03-16 16:33:34 -07:00
zfs_debug.c Annotated dprintf as printf-like 2021-06-24 13:12:36 -07:00
zfs_dir.c Clean up use of zfs_log_create in zfs_dir 2021-05-10 12:16:32 -07:00
zfs_file_os.c linux: don't fall through to 3-arg vfs_getattr 2021-05-27 22:31:57 -07:00
zfs_ioctl_os.c libzfs: On FreeBSD, use MNT_NOWAIT with getfsstat 2021-06-09 13:05:34 -07:00
zfs_racct.c Restore FreeBSD resource usage accounting 2021-02-19 22:34:33 -08:00
zfs_sysfs.c Persistent L2ARC 2020-04-10 10:33:35 -07:00
zfs_uio.c Removing old code for k(un)map_atomic 2021-03-19 22:38:44 -07:00
zfs_vfsops.c Linux: always check or verify return of igrab() 2021-03-16 16:33:34 -07:00
zfs_vnops_os.c Return required size when encode_fh size too small 2021-05-10 12:13:45 -07:00
zfs_znode.c Do not hash unlinked inodes 2021-06-15 16:56:19 -07:00
zio_crypt.c gcc 11 cleanup 2021-06-24 13:13:40 -07:00
zpl_ctldir.c Linux 5.12 compat: idmapped mounts 2021-03-19 21:00:59 -07:00
zpl_export.c Return required size when encode_fh size too small 2021-05-10 12:13:45 -07:00
zpl_file.c Remove iov_iter_advance() for iter_write 2021-06-09 13:05:34 -07:00
zpl_inode.c Update tmpfile() existence detection 2021-05-27 22:31:56 -07:00
zpl_super.c Linux: Fix ZFS_ENTER/ZFS_EXIT/ZFS_VERFY_ZP usage 2020-11-14 10:19:00 -08:00
zpl_xattr.c Bend zpl_set_acl to permit the new userns* parameter 2021-05-27 22:31:57 -07:00
zvol_os.c linux 5.13 compat: bdevops->revalidate_disk() removed 2021-05-27 22:09:26 -07:00