mirror_zfs/module/os/linux/zfs
Alexander Motin 67ea51710a Several improvements to ARC shrinking (#16197)
- When receiving memory pressure signal from OS be more strict
trying to free some memory.  Otherwise kernel may come again and
request much more.  Return as result how much arc_c was actually
reduced due to this request, that may be less than requested.
 - On Linux when receiving direct reclaim from some file system
(that may be ZFS) instead of ignoring request completely, just
shrink the ARC, but do not wait for eviction.  Waiting there may
cause deadlock.  Ignoring it as before may put extra pressure on
other caches and/or swap, and cause OOM if nothing help.  While
not waiting may result in more ARC evicted later, and may be too
late if OOM killer activate right now, but I hope it to be better
than doing nothing at all.
 - On Linux set arc_no_grow before waiting for reclaim, not after,
or it may grow back while we are waiting.
 - On Linux add new parameter zfs_arc_shrinker_seeks to balance
ARC eviction cost, relative to page cache and other subsystems.
 - Slightly update Linux arc_set_sys_free() math for new kernels.

Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Reviewed-by: Rob Norris <rob.norris@klarasystems.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
2025-11-03 13:51:00 -08:00
..
abd_os.c abd_os: split userspace and Linux kernel code 2024-11-15 10:15:00 -08:00
arc_os.c Several improvements to ARC shrinking (#16197) 2025-11-03 13:51:00 -08:00
mmp_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
policy.c cred: properly pass and test creds on other threads (#17273) 2025-06-02 16:49:51 -07:00
qat_compress.c Intel QAT 1.7 compatibility 2023-09-07 16:10:52 -07:00
qat_crypt.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
qat.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
spa_misc_os.c Cleanup: 64-bit kernel module parameters should use fixed width types 2022-10-13 10:03:29 -07:00
trace.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
vdev_disk.c [zfs-2.2.8] Revert "vdev_disk: default to classic submission for 2.2.x" 2025-05-29 15:29:27 -07:00
vdev_file.c Use <fcntl.h> instead of <sys/fcntl.h> 2025-05-27 14:56:58 -07:00
zfs_acl.c Fix an uninitialized data access (#16511) 2024-11-05 15:43:52 -08:00
zfs_ctldir.c config: remove HAVE_FILEMAP_RANGE_HAS_PAGE 2024-11-15 10:14:59 -08:00
zfs_debug.c zfs_debug: specific variant for userspace 2024-11-15 10:15:01 -08:00
zfs_dir.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_file_os.c zfs_file: rename zfs_file_fallocate to zfs_file_deallocate 2024-11-15 10:15:00 -08:00
zfs_ioctl_os.c Linux 6.3 compat: idmapped mount API changes 2023-04-10 14:15:36 -07:00
zfs_racct.c module: zfs: fix unused, remove argsused 2021-12-23 09:42:47 -08:00
zfs_sysfs.c [2.2.5-only] Make 'rmmod zfs' work after zfs-2.2.4 (#16406) 2024-08-02 18:03:09 -07:00
zfs_uio.c linux/uio: remove "skip" offset for UIO_ITER 2025-05-27 14:41:45 -07:00
zfs_vfsops.c config: remove HAVE_SUPER_SETUP_BDI_NAME 2024-11-15 10:15:00 -08:00
zfs_vnops_os.c add get_name implementation for exports. (#16833) 2024-12-04 14:12:39 -08:00
zfs_znode_os.c Linux 6.12: PG_error flag was removed 2024-11-15 10:15:01 -08:00
zio_crypt.c ZIL: Assert record sizes in different places 2024-01-08 16:11:39 -08:00
zpl_ctldir.c [zfs-2.2.9] Fix zpl_ctldir.c checkstyle 2025-10-20 14:56:20 -07:00
zpl_export.c add get_name implementation for exports. (#16833) 2024-12-04 14:12:39 -08:00
zpl_file_range.c config: remove HAVE_VFS_COPY_FILE_RANGE 2024-11-15 10:14:59 -08:00
zpl_file.c Linux 6.16: remove writepage and readahead_page 2025-10-16 16:50:25 -07:00
zpl_inode.c Linux 6.15: mkdir now returns struct dentry * 2025-05-27 14:41:45 -07:00
zpl_super.c Linux: Fix zfs_prune panics v2 2025-05-27 14:41:45 -07:00
zpl_xattr.c config: remove HAVE_XATTR_LIST_SIMPLE 2024-11-15 10:14:59 -08:00
zvol_os.c zvol: verify IO type is supported 2025-10-20 14:56:20 -07:00