zfsctl_snapshot_mount() holds z_teardown_lock(R) across call_usermodehelper(), which spawns a mount process that needs namespace_sem(W) via move_mount. Reading /proc/self/mountinfo holds namespace_sem(R) and needs z_teardown_lock(R) via zpl_show_devname. When zfs_suspend_fs (from zfs recv or zfs rollback) queues z_teardown_lock(W), the rrwlock blocks new readers, completing the deadlock cycle. Fix by releasing z_teardown_lock(R) after gathering the dataset name and mount path, before any blocking operation. Everything after the release operates on local string copies or uses its own synchronization. The parent zfsvfs pointer remains valid because the caller holds a path reference to the automount trigger dentry. Releasing the lock allows zfs_suspend_fs to proceed concurrently with the mount helper, so dmu_objset_hold in zpl_get_tree can transiently fail with ENOENT during the clone swap. The mount helper fails, EISDIR is returned, and the VFS falls back to the ctldir stub (empty directory) until the next access retries. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com> Reviewed-by: Rob Norris <robn@despairlabs.com> Signed-off-by: Ameer Hamza <ahamza@ixsystems.com> Closes #18415
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.
Official Resources
- Documentation - for using and developing this repo
- ZoL site - Linux release info & links
- Mailing lists
- OpenZFS site - for conference videos and info on other platforms (illumos, OSX, Windows, etc)
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 and Distributions
Linux
Given the wide variety of Linux environments, we prioritize development and testing on stable, supported kernels and distributions.
Kernel (kernel.org)
All longterm kernels from kernel.org are supported. stable kernels are usually supported in the next OpenZFS release.
Supported longterm kernels: 6.18, 6.12, 6.6, 6.1, 5.15, 5.10.
Red Hat Enterprise Linux (RHEL)
All RHEL (and compatible systems: AlmaLinux OS, Rocky Linux, etc) on the full or maintenance support tracks are supported.
Supported RHEL releases: 8.10, 9.7, 10.1.
Ubuntu
All Ubuntu LTS releases are supported.
Supported Ubuntu releases: 24.04 “Noble”, 22.04 “Jammy”.
Debian
All Debian stable and LTS releases are supported.
Supported Debian releases: 13 “Trixie”, 12 “Bookworm”, 11 “Bullseye”.
Other Distributions
Generally, if a distribution is following an LTS kernel, it should work well with OpenZFS.
FreeBSD
All FreeBSD releases receiving security support are supported by OpenZFS.
Supported FreeBSD releases: 15.0, 14.3, 13.5.
