mirror_zfs/module/os/linux/zfs
shodanshok 4808641e71 enforce arc_dnode_limit
Linux kernel shrinker in the context of null/root memcg does not scan
dentry and inode caches added by a task running in non-root memcg. For
ZFS this means that dnode cache routinely overflows, evicting valuable
meta/data and putting additional memory pressure on the system.

This patch restores zfs_prune_aliases as fallback when the kernel
shrinker does nothing, enabling zfs to actually free dnodes. Moreover,
it (indirectly) calls arc_evict when dnode_size > dnode_limit.

Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Gionatan Danti <g.danti@assyoma.it>
Closes #17487
Closes #17542
2025-08-07 12:11:34 -04:00
..
abd_os.c Export correct symbols for Lustre Direct I/O 2025-05-28 16:00:28 -07:00
arc_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
mmp_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
policy.c cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
qat_compress.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
qat_crypt.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
qat.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa_misc_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
trace.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_disk.c tunables: fix spelling 2025-06-17 10:50:26 -07:00
vdev_label_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_raidz.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_acl.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-04-16 09:59:45 -07:00
zfs_ctldir.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_debug.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_dir.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-04-16 09:59:45 -07:00
zfs_file_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_ioctl_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_racct.c SPDX: license tags: BSD-2-Clause 2025-04-16 09:59:44 -07:00
zfs_sysfs.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_uio.c linux/uio: remove "skip" offset for UIO_ITER 2025-05-28 16:00:28 -07:00
zfs_vfsops.c enforce arc_dnode_limit 2025-08-07 12:11:34 -04:00
zfs_vnops_os.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-04-16 09:59:45 -07:00
zfs_znode_os.c Define sops->free_inode() to prevent use-after-free during lookup 2025-08-05 12:30:23 -04:00
zio_crypt.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zpl_ctldir.c Linux 6.15: mkdir now returns struct dentry * 2025-05-28 16:00:28 -07:00
zpl_export.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zpl_file_range.c ioctl: remove FICLONE/FICLONERANGE/FIDEDUPERANGE compat 2025-06-17 10:50:27 -07:00
zpl_file.c ioctl: remove FICLONE/FICLONERANGE/FIDEDUPERANGE compat 2025-06-17 10:50:27 -07:00
zpl_inode.c Linux 6.15: mkdir now returns struct dentry * 2025-05-28 16:00:28 -07:00
zpl_super.c Define sops->free_inode() to prevent use-after-free during lookup 2025-08-05 12:30:23 -04:00
zpl_xattr.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zvol_os.c linux/zvol_os: don't try to set disk ops if alloc fails 2025-06-17 10:50:26 -07:00