Go to file
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
.github CI: Fix FreeBSD 15.0 by staying on ALPHA4 due to broken ALPHA5 image 2025-10-16 16:45:07 -07:00
cmd Add interface to interface spa_get_worst_case_min_alloc() function 2025-10-20 14:56:20 -07:00
config Linux 6.17: d_set_d_op() is no longer available 2025-10-16 17:03:47 -07:00
contrib Debian rules: install scripts/objtool-wrapper.in into dkms tree 2025-10-22 10:34:53 -07:00
etc docs: fix a few small typos (#17804) 2025-10-16 16:45:07 -07:00
include Several improvements to ARC shrinking (#16197) 2025-11-03 13:51:00 -08:00
lib cred: properly pass and test creds on other threads (#17273) 2025-06-02 16:49:51 -07:00
man Several improvements to ARC shrinking (#16197) 2025-11-03 13:51:00 -08:00
module Several improvements to ARC shrinking (#16197) 2025-11-03 13:51:00 -08:00
rpm RPM: Hold back incompatible kernel packages on Fedora 2025-05-27 14:54:34 -07:00
scripts Linux build: handle CONFIG_OBJTOOL_WERROR=y 2025-10-16 16:50:20 -07:00
tests zvol: verify IO type is supported 2025-10-20 14:56:20 -07:00
udev Avoid computing strlen() inside loops 2024-11-05 15:43:52 -08:00
.cirrus.yml CI: add FreeBSD build with Cirrus CI 2023-10-07 09:08:20 -07:00
.editorconfig Add an .editorconfig; document git whitespace settings 2020-01-27 13:32:52 -08:00
.gitignore Packaging: Auto-generate changelog during configure (#15528) 2023-11-16 14:23:03 -08:00
.gitmodules .gitmodules: link to openzfs github repository 2021-04-12 09:37:23 -07:00
.mailmap AUTHORS: refresh with recent new contributors (#16362) 2024-07-23 11:58:49 -07:00
AUTHORS AUTHORS: refresh with recent new contributors (#16362) 2024-07-23 11:58:49 -07:00
autogen.sh Ubuntu 22.04 integration: ShellCheck 2022-11-18 11:24:48 -08:00
CODE_OF_CONDUCT.md Documentation corrections 2022-12-22 11:34:28 -08:00
configure.ac Linux build: handle CONFIG_OBJTOOL_WERROR=y 2025-10-16 16:50:20 -07:00
copy-builtin copy-builtin: add hooks with sed/>> 2022-05-10 10:17:43 -07:00
COPYRIGHT Fix typos 2020-06-09 21:24:09 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
Makefile.am Process script directory for all configs 2022-10-27 16:45:14 -07:00
META Linux 6.17 compat: META 2025-10-20 14:56:20 -07:00
NEWS Fix NEWS file 2020-08-26 21:44:41 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-11-15 10:15:00 -08:00
RELEASES.md Add RELEASES.md file 2021-04-02 16:33:40 -07:00
TEST Remove CI builder customization from TEST 2020-03-16 10:46:03 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. This repository contains the code for running OpenZFS on Linux and FreeBSD.

codecov coverity

Official Resources

Installation

Full documentation for installing OpenZFS on your favorite operating system can be found at the Getting Started Page.

Contribute & Develop

We have a separate document with contribution guidelines.

We have a Code of Conduct.

Release

OpenZFS is released under a CDDL license. For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197

Supported Kernels

  • The META file contains the officially recognized supported Linux kernel versions.
  • Supported FreeBSD versions are any supported branches and releases starting from 13.0-RELEASE.