Go to file
Matthew Ahrens 1fac63e56f OpenZFS 9577 - remove zfs_dbuf_evict_key tsd
The zfs_dbuf_evict_key TSD (thread-specific data) is not necessary -
we can instead pass a flag down in a few places to prevent recursive
dbuf eviction. Making this change has 3 benefits:

1. The code semantics are easier to understand.
2. On Linux, performance is improved, because creating/removing
   TSD values (by setting to NULL vs non-NULL) is expensive, and
   we do it very often.
3. According to Nexenta, the current semantics can cause a
   deadlock when concurrently calling dmu_objset_evict_dbufs()
   (which is rare today, but they are working on a "parallel
   unmount" change that triggers this more easily):

Porting Notes:
* Minor conflict with OpenZFS 9337 which has not yet been ported.

Authored by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Serapheim Dimitropoulos <serapheim.dimitro@delphix.com>
Reviewed by: Brad Lewis <brad.lewis@delphix.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>

OpenZFS-issue: https://illumos.org/issues/9577
OpenZFS-commit: https://github.com/openzfs/openzfs/pull/645
External-issue: DLPX-58547
Closes #7602
2018-06-13 11:05:06 -07:00
.github Small cleanup of PR and issue templates 2018-05-15 09:02:57 -07:00
cmd Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
config Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
contrib Add pyzfs build directories to gitignore 2018-06-11 18:42:12 -07:00
etc Minor documentation, logging, and testing typos 2018-06-07 09:38:39 -07:00
include OpenZFS 9577 - remove zfs_dbuf_evict_key tsd 2018-06-13 11:05:06 -07:00
lib Fix efi_get_info() zvol detection 2018-06-13 10:20:58 -07:00
man Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
module OpenZFS 9577 - remove zfs_dbuf_evict_key tsd 2018-06-13 11:05:06 -07:00
rpm Update build system and packaging 2018-05-29 16:00:33 -07:00
scripts Update build system and packaging 2018-05-29 16:00:33 -07:00
tests ZTS: deletes home directories in /export/home 2018-06-12 10:42:26 -07:00
udev Add kernel module auto-loading 2018-03-13 10:45:55 -07:00
.gitignore Ignore *.o.ur-safe build artifacts 2018-05-13 18:59:02 -07:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
.travis.yml Add .travis.yml 2017-11-13 09:18:18 -08:00
AUTHORS Update build system and packaging 2018-05-29 16:00:33 -07:00
autogen.sh build: do not call boilerplate ourself 2013-04-02 10:55:20 -07:00
configure.ac Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
copy-builtin Update build system and packaging 2018-05-29 16:00:33 -07:00
COPYRIGHT Update build system and packaging 2018-05-29 16:00:33 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
Makefile.am make install only works once 2018-05-31 09:19:59 -07:00
META Explicitly state supported Linux versions 2018-05-30 20:11:19 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md Explicitly state supported Linux versions 2018-05-30 20:11:19 -07:00
TEST Update build system and packaging 2018-05-29 16:00:33 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

ZFS on Linux is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community.

codecov coverity

Official Resources

Installation

Full documentation for installing ZoL on your favorite Linux distribution can be found at our site.

Contribute & Develop

We have a separate document with contribution guidelines.

Release

ZFS on Linux 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 kernel versions.