NAS-140407 / 26.0.0-BETA.2 / Fix FC/iSCSI path availability during ALUA failover (by bmeagherix) (by bugclerk) (#18585)
Fixes FC/iSCSI path availability during HA failover when ALUA is
enabled.
Four independent problems caused paths to drop or I/O to fail during the
`dev_disk` -> `dev_vdisk` LUN swap window:
- **FC path death**: HA iSCSI session logout cascaded through SCST and
removed LUN mappings before the LUN swap, destroying the ALUA tgt_dev
filter and causing LUN NOT SUPPORTED on FC. Fixed by deferring
`reset_active` to after `become_active` has replaced all LUN mappings.
- **90-second global drain**: `activate_extents` wrote `active=1` via
sysfs, triggering `scst_suspend_activity(90s)`. Fixed by removing the
job entirely - `bind_alua_state=1` already handles dev_vdisk file-open
drain-free via `blockio_on_alua_state_change_finish`.
- **LUN replace blocks on in-flight commands**: `scst_acg_repl_lun`
[34 lines not shown]
NAS-140407 / 27.0.0-BETA.1 / Fix FC/iSCSI path availability during ALUA failover (by bmeagherix) (#18576)
Fixes FC/iSCSI path availability during HA failover when ALUA is
enabled.
Four independent problems caused paths to drop or I/O to fail during the
`dev_disk` -> `dev_vdisk` LUN swap window:
- **FC path death**: HA iSCSI session logout cascaded through SCST and
removed LUN mappings before the LUN swap, destroying the ALUA tgt_dev
filter and causing LUN NOT SUPPORTED on FC. Fixed by deferring
`reset_active` to after `become_active` has replaced all LUN mappings.
- **90-second global drain**: `activate_extents` wrote `active=1` via
sysfs, triggering `scst_suspend_activity(90s)`. Fixed by removing the
job entirely - `bind_alua_state=1` already handles dev_vdisk file-open
drain-free via `blockio_on_alua_state_change_finish`.
- **LUN replace blocks on in-flight commands**: `scst_acg_repl_lun`
[21 lines not shown]
Suspend iscsi-scstd logins during ALUA failover transition
During failover, iscsi-scstd may accept connections before its
configuration is fully applied, causing permanent rejections. Send
SIGUSR1 before the ALUA transition begins and SIGUSR2 after
clear_suspend completes, ensuring initiators that arrive in the window
receive a retriable error instead.
NAS-140407 / 25.10.2.2 / Fix FC/iSCSI path availability during ALUA failover (#18568)
Fixes FC/iSCSI path availability during HA failover when ALUA is
enabled.
Four independent problems caused paths to drop or I/O to fail during the
`dev_disk` -> `dev_vdisk` LUN swap window:
- **FC path death**: HA iSCSI session logout cascaded through SCST and
removed LUN mappings before the LUN swap, destroying the ALUA tgt_dev
filter and causing LUN NOT SUPPORTED on FC. Fixed by deferring
`reset_active` to after `become_active` has replaced all LUN mappings.
- **90-second global drain**: `activate_extents` wrote `active=1` via
sysfs, triggering `scst_suspend_activity(90s)`. Fixed by removing the
job entirely - `bind_alua_state=1` already handles dev_vdisk file-open
drain-free via `blockio_on_alua_state_change_finish`.
- **LUN replace blocks on in-flight commands**: `scst_acg_repl_lun`
[16 lines not shown]
NAS-139966 / 26.0.0-BETA.2 / Strip double-quote and backslash from VPD serial numbers (by Qubad786) (#18580)
## Problem
Disk serial numbers may contain special characters (e.g., double quotes
or backslashes) due to unusual hardware encodings. These characters were
not removed during serial sanitization and were propagated into Netdata
chart and dimension identifiers.
The presence of unescaped quote or backslash characters resulted in
malformed JSON output and downstream parsing errors when consuming
metrics.
## Solution
Extended the serial sanitization logic to also strip double-quote (`"`)
and backslash (`\`) characters. This guarantees that disk identifiers
passed to Netdata are always JSON-safe.
[2 lines not shown]
Replace pysnmp with truenas_pysnmp C extension for SNMP traps
Rewrites snmp_trap.py to use the truenas_pysnmp C extension and replaces
the python3-pysnmp4 dependency with python3-truenas-pysnmp.
Replace pysnmp with truenas_pysnmp C extension for SNMP traps
Rewrites snmp_trap.py to use the truenas_pysnmp C extension and replaces
the python3-pysnmp4 dependency with python3-truenas-pysnmp.
NAS-140407 / 25.10.2.2 / Fix FC/iSCSI path availability during ALUA failover (#18568)
Fixes FC/iSCSI path availability during HA failover when ALUA is
enabled.
Four independent problems caused paths to drop or I/O to fail during the
`dev_disk` -> `dev_vdisk` LUN swap window:
- **FC path death**: HA iSCSI session logout cascaded through SCST and
removed LUN mappings before the LUN swap, destroying the ALUA tgt_dev
filter and causing LUN NOT SUPPORTED on FC. Fixed by deferring
`reset_active` to after `become_active` has replaced all LUN mappings.
- **90-second global drain**: `activate_extents` wrote `active=1` via
sysfs, triggering `scst_suspend_activity(90s)`. Fixed by removing the
job entirely - `bind_alua_state=1` already handles dev_vdisk file-open
drain-free via `blockio_on_alua_state_change_finish`.
- **LUN replace blocks on in-flight commands**: `scst_acg_repl_lun`
[16 lines not shown]
NAS-139966 / 27.0.0-BETA.1 / Strip double-quote and backslash from VPD serial numbers (#18579)
## Problem
Disk serial numbers may contain special characters (e.g., double quotes
or backslashes) due to unusual hardware encodings. These characters were
not removed during serial sanitization and were propagated into Netdata
chart and dimension identifiers.
The presence of unescaped quote or backslash characters resulted in
malformed JSON output and downstream parsing errors when consuming
metrics.
## Solution
Extended the serial sanitization logic to also strip double-quote (`"`)
and backslash (`\`) characters. This guarantees that disk identifiers
passed to Netdata are always JSON-safe.
NAS-140427 / 26.0.0-BETA.2 / Fix deprecated license format in `pyproject.toml` (by creatorcary) (#18578)
Replace deprecated `license = {text = "BSD-3-Clause"}` TOML table format
with the plain SPDX string `license = "BSD-3-Clause"` in
`pyproject.toml`, per current setuptools/packaging standards.
This was causing the following warning on `make reinstall`:
```
* Building wheel...
/usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!
********************************************************************************
Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).
This deprecation is overdue, please update your project and remove deprecated
calls to avoid build errors in the future.
[8 lines not shown]