iSCSI ALUA: regression test for failover LUN-replace stall
Add an extended test that builds 2 targets (25 + 10 LUNs), opens an
iSCSI session to the standby on the 25-LUN target so the kernel has
tgt_devs to clean up during become_active, then triggers an ungraceful
failover via poweroff_vm. Asserts:
- /var/log/failover.log on the new master does not contain
'Failed to restart service "iscsitarget" after 15 seconds',
which would indicate the LUN-replace loop stalled.
- /sys/kernel/scst_tgt/async_lun_replace reads 0 after failover,
confirming reset_active released the parked cleanup work.
- All LUNs are reachable on the new master.
A function-scoped fixture handles recovery (start_vm, wait_for_backup,
wait_for_settle) so the cluster is restored to a clean two-node state
even if an assertion above failed.
Uses the dataset() asset helper rather than zvol() for lower
per-extent overhead at this scale.
Release parked async LUN-replace cleanup after DLM peer eviction
scst.async_lun_replace=1 now also tells the kernel to park the deferred
cleanup of old tgt_devs from each LUN replace until the flag is cleared.
This avoids stalling become_active on scst_dlm_lock_wait inside
scst_clear_reservation while the dead peer is still a DLM lockspace
member.
Add iscsi.scst.disable_async_lun_replace and call it from the end of
iscsi.alua.reset_active, after dlm.reset_active (which evicts the peer)
completes.
Release parked async LUN-replace cleanup after DLM peer eviction
scst.async_lun_replace=1 now also tells the kernel to park the deferred
cleanup of old tgt_devs from each LUN replace until the flag is cleared.
This avoids stalling become_active on scst_dlm_lock_wait inside
scst_clear_reservation while the dead peer is still a DLM lockspace
member.
Add iscsi.scst.disable_async_lun_replace and call it from the end of
iscsi.alua.reset_active, after dlm.reset_active (which evicts the peer)
completes.
Add basic NFSv4 change-attribute regression tests
This commit adds a variety of tests in which we validate
the behavior the the NFSv4 change-attribute FATTR4_CHANGE over
a variety of NFS operations that should advance it.
NAS-140934 / 26.0.0-RC.1 / Expand sharing protocol tests for NFS (by anodos325) (#18917)
This commit converts some NFS tests into using lower-level pynfs library
to explicitly test server behavior and expands test coverage for readdir
operations.
Originally tests were executed via the linux NFS client which was
extremely limiting in how we can exercise server in a fine-grained
manner. This had the practical impact that a bug in an ACL-related
server response for non-Linux clients was undetected ( where READDIR
also requests NFS4.1 DACL -- linux never does this).
Original PR: https://github.com/truenas/middleware/pull/18912
---------
Co-authored-by: Andrew Walker <andrew.walker at truenas.com>
NAS-140905 / 26.0.0-RC.1 / Stop migration 0015 from forcing MISSION_CRITICAL profile (#18916)
Two small fixes for issues present on Goldeye:
- Migration `0015_update_profile.py` was force-setting `update.profile =
MISSION_CRITICAL` on every enterprise system regardless of the running
version's actual profile. A user upgrading from Fangtooth to a Goldeye
`EARLY_ADOPTER` release (e.g. 25.10-RC.1) was silently locked into
`MISSION_CRITICAL`. Once 25.10.3 (the first `MISSION_CRITICAL` Goldeye
release) shipped, `update.status` started returning a profile mismatch
and the `CurrentlyRunningVersionDoesNotMatchProfile` alert fired.
Migration is now a no-op; `update.config` already auto-populates
`profile` from `current_version_profile()` on first read.
- The mismatch alert was resolving profile names through
`update.profile_choices`, which filters out profiles outside the user's
product type (enterprise hides `DEVELOPER`/`EARLY_ADOPTER`). When the
running profile fell outside that filter, the alert text rendered
`<Unknown>` instead of the friendly name. Switched to resolving via
`UpdateProfiles[...].describe().name`.
[3 lines not shown]
Expand sharing protocol tests for NFS
This commit converts some NFS tests into using lower-level
pynfs library to explicitly test server behavior and expands
test coverage for readdir operations.
Originally tests were executed via the linux NFS client which
was extremely limiting in how we can exercise server in a
fine-grained manner.
(cherry picked from commit b7d93a78a95c85f3c943f9fcb73054d1c4812b30)
NAS-140934 / 27.0.0-BETA.1 / Expand sharing protocol tests for NFS (#18912)
This commit converts some NFS tests into using lower-level pynfs library
to explicitly test server behavior and expands test coverage for readdir
operations.
Originally tests were executed via the linux NFS client which was
extremely limiting in how we can exercise server in a fine-grained
manner. This had the practical impact that a bug in an ACL-related
server response for non-Linux clients was undetected ( where READDIR
also requests NFS4.1 DACL -- linux never does this).
NAS-140915 / 27.0.0-BETA.1 / Add recursion for filesystem.set_zfs_attributes (#18906)
This commit expands the API for filesystem.set_zfs_attributes to include
options for recursion. Specifically, we can do non-recursive, recursive
on files only and recursive on directories only, or recursively on both
files and directories.
Expand sharing protocol tests for NFS
This commit converts some NFS tests into using lower-level
pynfs library to explicitly test server behavior and expands
test coverage for readdir operations.
Originally tests were executed via the linux NFS client which
was extremely limiting in how we can exercise server in a
fine-grained manner.