Go to file
Ameer Hamza 1eace59060
libzfs: use mount_setattr for selective remount including legacy mounts
When a namespace property is changed via zfs set, libzfs remounts the
filesystem to propagate the new VFS mount flags. The current approach
uses mount(2) with MS_REMOUNT, which reads all namespace properties
from ZFS and applies them together. This has two problems:

1. Linux VFS resets unspecified per-mount flags on remount. If an
   administrator sets a temporary flag (e.g. mount -o remount,noatime),
   a subsequent zfs set on any namespace property clobbers it.

2. Two concurrent zfs set operations on different namespace properties
   can overwrite each other's mount flags.

Additionally, legacy datasets (mountpoint=legacy) were never remounted
on namespace property changes since zfs_is_mountable() returns false
for them.

Add zfs_mount_setattr() which uses mount_setattr(2) to selectively
update only the mount flags that correspond to the changed property.
For legacy datasets, /proc/mounts is iterated to update all
mountpoints. On kernels without mount_setattr (ENOSYS), non-legacy
datasets fall back to a full remount; legacy mounts are skipped to
avoid clobbering temporary flags.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Ameer Hamza <ahamza@ixsystems.com>
Closes #18257
2026-03-09 11:06:22 -07:00
.github CI: Remove deprecated Fedora 41 2026-02-25 11:20:23 -08:00
cmd zstream: consolidate shared code 2026-03-05 15:33:03 -08:00
config libzfs: use mount_setattr for selective remount including legacy mounts 2026-03-09 11:06:22 -07:00
contrib pyzfs: remove unimplemented libzfs_core functions from pyzfs 2026-02-05 15:34:55 -08:00
etc build: add SPDX license tags to build system files 2026-01-08 15:08:03 -08:00
include Implement lzc_send_progress 2026-03-06 11:05:58 -08:00
lib libzfs: use mount_setattr for selective remount including legacy mounts 2026-03-09 11:06:22 -07:00
man Add --no-preserve-encryption flag 2026-03-05 15:08:17 -08:00
module FreeBSD: Improve dmesg kernel message prefix 2026-03-09 10:17:23 -07:00
rpm build: add SPDX license tags to build system files 2026-01-08 15:08:03 -08:00
scripts Linux 7.0: explicitly set setlease handler to kernel implementation 2026-02-22 11:39:06 -08:00
tests libzfs: handle EDOM error in zpool_create 2026-03-08 12:59:10 -07:00
udev build: add SPDX license tags to build system files 2026-01-08 15:08:03 -08: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 08:58:47 -08:00
.gitmodules .gitmodules: link to openzfs github repository 2021-04-12 09:37:23 -07:00
.mailmap AUTHORS: add names of recent new contributors 2026-02-09 10:11:09 -08:00
AUTHORS AUTHORS: add names of recent new contributors 2026-02-09 10:11:09 -08:00
autogen.sh build: add SPDX license tags to build system files 2026-01-08 15:08:03 -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-06-16 08:12:09 -07:00
copy-builtin CI: Test & fix Linux ZFS built-in build 2026-02-19 10:15:41 -08: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 Zstd: Integrate v1.5.7 into the ZFS build system 2026-01-20 13:41:06 -08:00
META Linux 6.19 compat: META 2026-02-11 09:37:02 -08: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 Fix capitalization typo in README.md 2025-11-03 16:37:58 -08:00
RELEASES.md Update RELEASES.md LTS release to 2.2 2025-01-17 11:04:36 -05: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.