mirror_zfs/include/sys
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
..
crypto SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
fm SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
fs SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
lua SPDX: license tags: MIT 2025-04-16 09:59:44 -07:00
sysevent SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zstd SPDX: license tags: BSD-3-Clause 2025-04-16 09:59:44 -07:00
abd_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
abd.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
aggsum.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
arc_impl.h enforce arc_dnode_limit 2025-08-07 12:11:34 -04:00
arc.h During pool export flush the ARC asynchronously 2025-06-17 10:50:26 -07:00
asm_linkage.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
avl_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
avl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bitmap.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bitops.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
blake3.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
blkptr.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bplist.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bpobj.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bptree.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
bqueue.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
brt_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
brt.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
btree.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dataset_kstats.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dbuf.h Make ganging redundancy respect redundant_metadata property (#17073) 2025-08-05 13:10:40 -04:00
ddt_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
ddt.h FDT dedup log sync -- remove incremental 2025-08-05 12:15:21 -04:00
dmu_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_objset.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_recv.h cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
dmu_redact.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_send.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_traverse.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_tx.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu_zfetch.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dmu.h Increase meta-dnode redundancy in "some" mode 2025-08-05 13:15:44 -04:00
dnode.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_bookmark.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_crypt.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_dataset.h cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
dsl_deadlist.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_deleg.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_destroy.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_dir.h cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
dsl_pool.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_prop.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_scan.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_synctask.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
dsl_userhold.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
edonr.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
efi_partition.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
frame.h Linux build: silence objtool warnings 2025-06-17 10:50:26 -07:00
hkdf.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
metaslab_impl.h range_tree: Provide more debug details upon unexpected add/remove 2025-08-05 12:34:54 -04:00
metaslab.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
mmp.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
mntent.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
mod.h SPDX: license tags: GPL-2.0-or-later 2025-04-16 09:59:44 -07:00
multilist.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
nvpair_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
nvpair.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
objlist.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
pathname.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
qat.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
range_tree.h range_tree: Provide more debug details upon unexpected add/remove 2025-08-05 12:34:54 -04:00
rrwlock.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
sa_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
sa.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
sha2.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
skein.h SPDX: license tags: LicenseRef-OpenZFS-ThirdParty-PublicDomain 2025-04-16 09:59:45 -07:00
spa_checkpoint.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa_checksum.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa_log_spacemap.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa.h During pool export flush the ARC asynchronously 2025-06-17 10:50:26 -07:00
space_map.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
space_reftree.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
sysevent.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
txg_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
txg.h txg: generalise txg_wait_synced_sig() to txg_wait_synced_flags() (#17284) 2025-05-28 16:00:28 -07:00
u8_textprep_data.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
u8_textprep.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
uberblock_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
uberblock.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
uio_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
unique.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
uuid.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_disk.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_draid.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_file.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_impl.h range_tree: Provide more debug details upon unexpected add/remove 2025-08-05 12:34:54 -04:00
vdev_indirect_births.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_indirect_mapping.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_initialize.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_raidz_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_raidz.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_rebuild.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_removal.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_trim.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev.h FDT dedup log sync -- remove incremental 2025-08-05 12:15:21 -04:00
xvattr.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zap_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zap_leaf.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zap.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zcp_global.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zcp_iter.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zcp_prop.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zcp_set.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zcp.h cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
zfeature.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_acl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_bootenv.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_chksum.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_context.h cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
zfs_debug.h FDT dedup log sync -- remove incremental 2025-08-05 12:15:21 -04:00
zfs_delay.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_file.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_fuid.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_ioctl_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_ioctl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_onexit.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_project.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_quota.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_racct.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_ratelimit.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_refcount.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_rlock.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_sa.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_stat.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_sysfs.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_vfsops.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_vnops.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_znode.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zil_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zil.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zio_checksum.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zio_compress.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zio_crypt.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zio_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zio.h Make ganging redundancy respect redundant_metadata property (#17073) 2025-08-05 13:10:40 -04:00
zrlock.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zthr.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zvol_impl.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zvol.h SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00