Skip to content

NAS-142537 / 26.0.0-RC.1 / Update ZFS 2.4 to zfs-2.4.4 (by ixhamza) - #431

Merged
creatorcary merged 174 commits into
stable/26from
NAS-142537-26.0.0-RC.1
Aug 26, 2026
Merged

creatorcary merged 174 commits into
stable/26from
NAS-142537-26.0.0-RC.1

Conversation

@bugclerk

Copy link
Copy Markdown

Motivation and Context

  • Merge the latest upstream stable release (zfs-2.4.4).

Description

Merges the upstream zfs-2.4.4 tag into truenas/zfs-2.4-release. It adds no new pool feature flags over 2.4.3, so going back to 2.4.3 is still safe.

Two files conflicted, both with patches we had cherry-picked before the release:

  • module/Makefile.in: taken from upstream. The x in [chxS] no longer matches anything, since nfs41acl.x was removed by d01282fa5a, and upstream's version also fixes a bug when building outside the source tree.
  • module/zfs/ddt.c: conflicted with our DDT pruning cherry-pick, which has since landed upstream along with a follow-up fix, c714cc5a34. We revert our copy first in 376bcb4ca9 and take upstream as-is, so ddt.c now matches the tag exactly.

Notable upstream fixes:

One gap to note: zone_dataset_visible() still treats only / as a name separator, so @ and # names are not covered. Upstream fixes this in a05f9a86, which is not in 2.4.4. This merge does not make it worse.

How Has This Been Tested?

  • Scale Build and CI.
  • Ran the same tests on two 27 (Master) VMs, our 2.4.3 build against this one: scrub, snapshot, clone, send/recv, zvol IO, breaking and repairing a raidz1 disk, NFSv3 through v4.2, nvmet over TCP, SCST over a zvol, and SCST module load and unload cycles. fio came back with 0 verify failures, no kernel warnings, and reboot was clean.
  • Upgrade path both ways: pools made on 2.4.3 import on this build and pools made here import back on 2.4.3. Plain, lz4 and encrypted datasets all match by checksum, ACLs and snapshots are kept, and scrub reports 0 errors in both directions.
  • Both security fixes were reproduced on 2.4.3 and confirmed fixed here. Ten pool operations run from a delegated namespace all worked on 2.4.3 and are all refused here. Two of them did real damage on 2.4.3: a private dataset outside the delegation showed up in a listing, and a pool property set from inside the namespace stuck on the host. Separately, zpool export with a zvol held open hung on 2.4.3 and returns pool is busy right away here.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance enhancement (non-breaking change which improves efficiency)
  • Code cleanup (non-breaking change which makes code smaller or more readable)
  • Quality assurance (non-breaking change which makes the code more robust against bugs)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Library ABI change (libzfs, libzfs_core, libnvpair, libuutil and libzfsbootenv)
  • Documentation (a change to man pages or other documentation)

Checklist:

Original PR: #427

behlendorf and others added 30 commits June 8, 2026 12:25
Update the freebsd15-1s builder to the released STABLE image.

Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18524
We have an option in zfs-qemu-packages to test against a specific kernel
version.  However, qemu-3-deps.sh was incorrectly hard coded to look
at $2 for a kernel version argument (which could come in $2 or $3
depending on if --poweroff was also passed).  This caused the CI
to incorrectly edit META with a max supported kernel version of 99.99
when we didn't want that.

Fix this by looking at all the arguments for something that looks
like a kernel version and set that as the kernel max in META.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18526
Closes openzfs#18531
Fedora 42 was deprecated on May 13 2026.  Remove it from CI tests.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18545
Add a text box to specify a custom GCC version (like '16') when
running the zfs-arm builder.  This allows you to test with a newer
GCC than the Ubuntu default.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18540
FreeBSD 13.5 and stable/13 reached End-of-Life on April 30, 2026 and no
longer receive security support, so they fall outside README.md's stated
support policy.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18553
The Ubuntu 26.04 LTS, named "Resolute Raccoon, was released on
April 23, 2026.  Add to the supported releases in README.md and
add a CI builder for it.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18547
The qemu-guest-agent.service for Debian and Ubuntu does
not contain an install section which prevents it from
being enabled.  Add a drop-in override file so it can
be enabled and the service started on boot.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18547
Ensure samba usershares are enabled in the CI test environment for
the zfs_unshare_006_pos test case.  By default they are disabled
in the Ubuntu 26.04 LTS and must be enabled.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18547
The zfs-qemu-packages workflow allows us to easily build RPMs for the
current branch.  However, there can be cases where we want to use the
current CI environment to build older releases.  This can happen when
the VM or runner environment changes, and the older CI doesn't have
the updates needed to run with it anymore.

This commit adds in a text box to specify a specific branch/tag to build
using the current CI environment.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18569
Add freebsd15-0r to the FreeBSD presets

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18561
Full CI runs for proposed changes always occur in the PR where the
review is done and patch approved.  Once merged the full CI is run
again using the merged commit.  This is somewhat overkill.  In the
interest of reducing the CI load only run the zloop and checkstyle
workflows which are enough to verify the build on the master branch.
Push events to forks will continue to trigger a full CI run.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18571
FULL_RUN_REGEX in generate-ci-type.py covered .github/workflows/scripts/
but not the workflow YAML files, so a PR that only edited zfs-qemu.yml
got "quick" CI and never tested its own matrix change. Add the YAML
files to the list.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18577
Describe the current zfs-qemu pipeline, ci_type selection, supported
guests, and the code-checking and other auxiliary workflows.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18590
The checkstyle workflow was the only one still pinned to
actions/checkout@v4; the other workflows already use v6.
Bump it to match.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18600
Almalinux 9,10 kernels now include a backport of Linux commit
v6.15-13744-g41cb08555c41 which renames the from_timer() function
to timer_container_of().  Apply the upstream Lustre compatibility
patch to our builds.  This patch should be included in the next
Lustre release and can be dropped then.

ZFS-CI-Type: quick

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Follow-up to openzfs#18518, which skipped the qemu matrix on doc-only PRs.
zloop, zfs-arm, and smatch are irrelevant to doc-only changes.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18601
... so we can toggle ZFS debug assertions from the
Linux kernel build without having to regenerate the
ZFS patch.

Update the qemu test script to also set this kernel
config.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Co-authored-by: Timothy Day <timday@thelustrecollective.com>
Closes openzfs#18595
The package removal ran against a stale package index and failed to
fetch a package that had been removed from the repository. Refresh
the index first.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18607
Closes openzfs#18609
The zfs-arm workflow was the only build/test workflow without a
concurrency block, so superseded runs were not cancelled.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christos Longros <chris.longros@gmail.com>
Closes openzfs#18608
Add additional checks to verify a packed string or string array nvpair
is terminated.  Or more specifically, verify doing a strlen() on the
prospective string does not overrun the packed nvlist buffer.

Also add additional checks in the libzfs_input_checks test case to
verify un-terminated strings, and add in a nvlist ioctl payload
fuzz test for good measure.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18604
Fix the mismatched type in zfs_ioc_userspace_many() and limit the
number of entries returned to 1000.  When a size larger than this
is requested the response is truncated, zfs_userspace() already
correctly handles short responses.  Historically, zfs_userspace()
has requested 100 entries at a time, this cap allows for 10x larger
batch sizes if needed in the future.

Reported-by: Yuxiang Yang, Yizhou Zhao, Ao Wang, Xuewei Feng, Qi Li,
Reported-by: and Ke Xu from Tsinghua University using GLM-5.1 from Z.ai
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18615
Check for invalid characters in sharenfs/sharesmb dataset props.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18613
Update vdev_prop_get_objid() to set objid on error as the comment
in vdev_prop_get() describes.

    "objid is set to 0 when absent and the few cases that call
    zap_lookup directly guard against this below."

This resolves the following possible uninitialized variable warning.

    module/zfs/vdev.c: In function โ€˜vdev_prop_getโ€™:
    module/zfs/vdev.c:6913:12: error: โ€˜objidโ€™ may be used uninitialized
    in this function [-Werror=maybe-uninitialized]

Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18616
When zc->zc_cookie is set this indicates to zfs_ioc_set_prop() that
these are received properties and ZPROP_HAS_RECVD will be set on the
dataset.  This is only done as part of a `zfs receive` so additionally
apply the zfs_secpolicy_recv() policy.  Individual property checks
continue to be handled by zfs_check_settable().

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18617
Instead of performing multiple operations on the path name in
zfs_key_config_modify_session_counter() open the file once and
perform the fchown, fchmod, and openat on the open file handle.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18618
The smartctl exception in /etc/sudoers.d/zfs doesn't cover devices
like NVMe or symlinked devices.  Just get rid of it rather than
keep maintaining it.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18626
This workflow was disabled 'on push' recently in commit 1916c2c
to reduce redundant CI runs.  However, this check is fairly quick
and we want it run regularly against the branches.  Enable it.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18627
CodeQL Action v3 has been deprecated and will be retired
December 2026.  Update codeql.yml to use CodeQL Action v4
and update the runner to ubuntu-24.04.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18629
When CONFIG_RCU_CPU_STALL_TIMEOUT is configured an RCU stall which
exceeds the default timeout will trigger an NMI and panic the VM.
Given the heavily virtualized nature of the CI environment we want
to make sure to only trigger this due to a real deadlock and not
due to over-subscription of the systems resources.  This timeout
normally defaults to 20-30 seconds and this change increases it
to 120 seconds.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes openzfs#18624
Fallback to trying the "CentOS Strean Composes" repo for the qcow2
images if the regular URLs fail.  The Composes repo contains the daily
autobuilt Stream images.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes openzfs#18628
mkhllr and others added 15 commits August 19, 2026 17:34
When the claim could not write to every device the config expects
present, spa_activity_check_claim() replaced the error from
mmp_claim_uberblock() with EREMOTEIO, so an operator whose peer died
together with its mirror legs was told another host holds the pool,
which sends them looking for a host that is not there.

Report the cause instead.  A shortfall has two causes worth telling
apart, so mmp_claim_uberblock() now counts the writes it issues
alongside the ones that succeed.  A leaf the config expects present but
which cannot be written is never issued one, so too few issued means a
device is absent, which persists across retries and is what
"zhack mmp reclaim" recovers; that returns ENODEV.  Enough issued but
too few good means the writes reached present devices and failed, which
a retry may clear; that stays EIO.  The issued count is gated exactly as
the good count is so the two describe the same set of leaves.

Both get a case in spa_ld_activity_result() and both still return
EREMOTEIO to userspace, as the ENXIO case already does, and the cause
travels to userspace in ZPOOL_CONFIG_MMP_RESULT so zpool(8) can say
which one it was and, for ENODEV, name the recovery.

ZPOOL_CONFIG_MMP_STATE stays MMP_STATE_ACTIVE for both even though
nothing is active.  An older zpool(8) knows only the two existing
states and reaches zfs_error_aux() with an uninitialized buffer for
anything else, so the state is kept as one it understands.  An older
zpool(8) against this kernel therefore prints what it prints today, and
a newer zpool(8) against an older kernel finds no cause reported and
falls back to the same text.

The paths where the claim genuinely detects another host still return
EREMOTEIO and are unaffected.

Also correct the comment above the write count, which still described
the fixed two writes per mirror that 8cdd9b2 replaced with one write
per leg the config expects present.

mmp_degraded_import.ksh asserted on the old message in the two cases
which are now ENODEV, and is updated with them.  The zhack case asserts
both directions, since a message that stops being emitted fails
silently: the shortfall must be reported, and it must not be reported
as another host holding the pool.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Michael Heller <michael.heller@gmail.com>
Closes openzfs#18892
Since the switch from implicit to explicit userns, and to idmap,
happened right across the kernel in major releases, so it is enough to
use a single test and apply the results everywhere.

generic_permission() is a nice simple function with a simple interface,
so useful for an unambiguous test.

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18769
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18959
This commit adds a cred_t parameter to vdev_open() and threads it
through to all the vdev_op_open callbacks. The default is CRED(), ie the
credential of the calling task, which is usually some userspace control
process calling ioctl().

To handle the parallel vdev open case, we take additional and additional
reference to the cred for each task, and pass it down to vdev_open().

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18960
If we're opening a file on behalf of the user, we need to ensure that
that user actually has access to it. Add a credential parameter to
zfs_file_open() and use it when opening the file.

Existing callers use kcred for now to get the same behaviour as before.

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18960
Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18960
bdev_file_open_by_path() does not do any kind of credential check on the
given device path, so we need to do our own. We temporarily swap in the
passed in credential as the task credential, then call kern_path() and
inode_permission(), which together will ensure the credential can both
see and access the given path.

For the reopening case, we use the kernel credential. The idea here is
that since the device was already open, we shouldn't fail to reopen just
because the calling user can't see it, which would prevent device
removal, offline, online, etc.

Include some light reorganising in the error paths, since we might not
always have a device handle to carry the current error.

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18960
Tests that zpool create, add, attach and import all properly enforce the
restrictions on the calling user to access device nodes.

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes openzfs#18960
Add missing 'capsh' to commands.cfg.  It was included in
master with 7839c4b but that was not backported to this branch.

Signed-off-by: Tony Hutter <hutter2@llnl.gov>
META file and changelog updated.

Signed-off-by: Tony Hutter <hutter2@llnl.gov>
@bugclerk

Copy link
Copy Markdown
Author

Automatic cherry-pick failed. Please resolve conflicts by running:

git cherry-pick -x 68c8dbe42ea8b119b6e16f66bfb22ac901cb4756
git cherry-pick -x d49cdddcef064668ad1d401fe3a16e8d71954fbd
git cherry-pick -x 977a37cd51b687acd9213cb841158021f83ea0fa
git cherry-pick -x 910ff1a4e9eb7c9322e61a2d723e347551e81004
git cherry-pick -x b4411799bdff8b1470d75bfe802ab831cb886c15
git cherry-pick -x 47f32602d7a21a4defbff565c00182cb355dc9f6
git cherry-pick -x d3cb4d1c6b906a797b1aabe93f42a3648b6f61a2
git cherry-pick -x 990b9a3d5d13d5bd0679ecdb361f7f7d0236c3a4
git cherry-pick -x 7009da595dc0f66d06015a6081c1b04a250fada2
git cherry-pick -x 2e590aff67e20df1f6385bb31ac4b26b3c66844f
git cherry-pick -x 7d8a1e9d26f07703f4aa39407543bc4166598cd3
git cherry-pick -x 920b3b6bab0770fcf3113bae01606db7c8089e6b
git cherry-pick -x c778b1e394e7ff55787bc2eaf3964750e92c85c0
git cherry-pick -x d6bbb80aedda2482950585a10e70cbd9d9d92482
git cherry-pick -x a6f557c2cb58499dc3e09f5b91b1b3e4aa9b0c4f
git cherry-pick -x f5330ea341b02843f28ab9c221df8e82e6de46e0
git cherry-pick -x d37f629ce8fbf49d1f47dd9eec26b8fb1ca56784
git cherry-pick -x 36a398de222704a7581c3781ec70570d9cc77bab
git cherry-pick -x 5e2957f7bae2ce8b780cb4b5abb0d874cb89bac1
git cherry-pick -x 9623afdb9f35bf7b5c537884affccde844403e73
git cherry-pick -x 292c190b897fad96c07e99259d90fe81f0753774
git cherry-pick -x af55dd36c59118bbcec09e0314242f93a9e05927
git cherry-pick -x fee6805042b38397fa6eff3bb61f706f816ad79e
git cherry-pick -x 5f9bea1147865bf5620a959137526dd6989fcb99
git cherry-pick -x 51423455a75298d243aa37b550627f3e31b37c2e
git cherry-pick -x 8ff555ea8a4a319c2632e589172dda761d5f66a9
git cherry-pick -x cc010bbc34915310c6f31ca001a66f16b2ca3265
git cherry-pick -x a052ffc647e200ac5068828ce72dec067908978b
git cherry-pick -x b00191f3fa1c24e787717b76e6567b1eb22b3e10
git cherry-pick -x 51421b0efbc818d366a7ef627883250ffd639c07
git cherry-pick -x 49086325ba7f9651ec540ea446dc1e64c280786a
git cherry-pick -x 17834383e58453d0e334a4068a8f830cbaadb251
git cherry-pick -x bcf2999dbd197aafd387679c5f80736ea818c0f3
git cherry-pick -x 22336114452d7a8809b1ef0e19dc96fa78955ce9
git cherry-pick -x 9683c86c42d37af79fbb4617bf863628ff35ff9a
git cherry-pick -x 62a341175fdb2303b3373de224ea9eba05ffe0d8
git cherry-pick -x 8be87df6156256f590251c17ef0fde78edc6b64e
git cherry-pick -x 67d36b8075a18b5177c4968ac8b68dcefa7c67c5
git cherry-pick -x 9a84f3b5dd54ceafe1f15011ecd324d7654e12ec
git cherry-pick -x 3e8965e780d8de9beab929e1444f01b1489ba339
git cherry-pick -x 96eafcf17e2e551e0ddf955add746f77cfa1a067
git cherry-pick -x dffd011d96d42c4e8db4b33d8d5b1f9037a3ba55
git cherry-pick -x 02861fdeb76e4221b428d4cbc6680bc8380d3061
git cherry-pick -x 81afa83d0bcb3a7c5b84eefef020e7ce7768aab9
git cherry-pick -x c4e020c1563a5deee76582db01a923149838c345
git cherry-pick -x bda84a4fb68df584616c8c70a5d525a5527094be
git cherry-pick -x 9926f72b8f5eeb732639b483706fe39204ad4b4c
git cherry-pick -x ec565e143c7c4b57c025c9f8fec972ae0de4b21a
git cherry-pick -x 88c5af6390f066340a468675ccc1de7bc2040ed3
git cherry-pick -x c714cc5a3406518e4d510b81457186b4d45eaa27
git cherry-pick -x 6c7be416facb9b14717d9b5d92b3d0c40f476028
git cherry-pick -x d9031a262b3633378212cb0b12f6da57906ab52b
git cherry-pick -x bc53c75223a40dddd85efa8c273481d14c6298bc
git cherry-pick -x fb7d409286d78a9e470fd06966c8d8d07bc89e5c
git cherry-pick -x 9e07bfac7d22497716620d2730a89f7100a00159
git cherry-pick -x 602794cc2b0f8f6354d0afe20decf4fdc8cb6173
git cherry-pick -x 92b8a665b4974223f8137f0ebe9fb3db2000ae61
git cherry-pick -x 76aeadddd4a6dd2a1dcf1ba3a09cc0adaf1f663c
git cherry-pick -x 91a8d72d71cb63f283cf10bd3205985b63c9c033
git cherry-pick -x 19db2358a1a4e0e778bf250275761f2b4ce665e1
git cherry-pick -x d3a101bbc0e0dfdc958c743e692262b022d17e1a
git cherry-pick -x 6ebae07fa9953d0fbe06bbb726bee4ed53d55019
git cherry-pick -x 907dd00bf926493927826883e74326a15905adb4
git cherry-pick -x 07f76455bf94a18e992661ea6b8430acf14b5177
git cherry-pick -x 2900998b5c169f972a321edf0e7942c88cc6f7d7
git cherry-pick -x 90c5f63087846555b933cc57f5b7d174909b8eb9
git cherry-pick -x 8c5e28db94fdfd22a4ef25d5522740efedc7f9cc
git cherry-pick -x 8f8bc4f261eb5075ea896a19982ff0bb5b2f2d80
git cherry-pick -x 71a9f9578616a90c3c14bb59629fb4d31bfd68d1
git cherry-pick -x 376bcb4ca9ccf3914c346d9c35a7ca306926d663
git cherry-pick -x 5419249fdb542f0ac79c384d4b699d6be1cb72d5
git cherry-pick -x a5bc976328226cd341e66e817d09d10e19d70269

If the original PR was merged via a squash, you can just cherry-pick the squashed commit:

git reset --hard HEAD~37
git cherry-pick -x 3813b51b809fdeeb03407f1e4b34860e3388d7ef

@bugclerk

Copy link
Copy Markdown
Author

@ixhamza
ixhamza force-pushed the NAS-142537-26.0.0-RC.1 branch from 9d457e1 to 3813b51 Compare August 26, 2026 14:53
ixhamza and others added 4 commits August 26, 2026 19:56
OpenZFS 2.4.4

Signed-off-by: Ameer Hamza <ameer.hamza@truenas.com>
In 88261a8 I reorganised the blockdev open error handling to
accomodate the permission check. What I didn't notice was that I'd made
the ENOENT case break after the timeout, rather than looping and
retrying.

This commit fixes it up the right way, and this time adds a lot more
commentary to make it easier to see what's happening for each case.

Sponsored-by: TrueNAS
Signed-off-by: Rob Norris <rob.norris@truenas.com>
@ixhamza
ixhamza force-pushed the NAS-142537-26.0.0-RC.1 branch from 3813b51 to a2ca839 Compare August 26, 2026 15:00
@ixhamza
ixhamza marked this pull request as ready for review August 26, 2026 15:00
@creatorcary
creatorcary merged commit c1e228c into stable/26 Aug 26, 2026
17 of 20 checks passed
@creatorcary
creatorcary deleted the NAS-142537-26.0.0-RC.1 branch August 26, 2026 18:32
@bugclerk

Copy link
Copy Markdown
Author

This PR has been merged and conversations have been locked.
If you would like to discuss more about this issue please use our forums or raise a Jira ticket.

@truenas truenas locked as resolved and limited conversation to collaborators Aug 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.