mirror of
https://github.com/TheGrandWazoo/freenas-proxmox.git
synced 2026-09-29 19:41:11 +02:00
docs: confirm multipath works over WebSocket transport, live-tested
Full alloc_image/activate_volume/path/deactivate_volume/free_image cycle against .92 with zero code changes to TrueNASMultipath.pm -- real dm-multipath device came up with 2 active paths. Also notes a practical finding: .92 has only one TrueNAS portal object (0.0.0.0) rather than two per-IP ones, and iscsiadm still produced two genuine independent paths logging into different IPs against it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e5f9de040c
commit
db13023b83
@@ -272,15 +272,28 @@ dynamic/development node for whatever version-specific testing comes up next
|
||||
`pool.dataset.delete` returns one) and needs `ref() eq 'HASH'` guarding.
|
||||
- #249 (per-variant dispatch) stays deferred past v4.0.0 — tracked as possible
|
||||
v4.1/v5.0 scope, see Question 2 above.
|
||||
- **`TrueNASMultipath.pm` needs no separate WebSocket work.** It calls
|
||||
- **`TrueNASMultipath.pm` needs no separate WebSocket work — CONFIRMED live
|
||||
2026-08-31, not just by code inspection.** It calls
|
||||
`PVE::Storage::Custom::TrueNAS::_api(...)` directly (a fully-qualified sub
|
||||
call, not an overridable method) for every operation except its four
|
||||
multipath-specific overrides (`path`, `qemu_blockdev_options`,
|
||||
`activate_volume`, `deactivate_volume`, none of which touch the TrueNAS API
|
||||
directly). Once `_api()` becomes the REST/WS dispatcher decided above,
|
||||
multipath inherits WebSocket support automatically. Documented in
|
||||
`docs/architecture.md` §9 (added 2026-08-30, alongside README/docs coverage
|
||||
for the multipath package that had been missing since its v3.2.0 release).
|
||||
directly). Ran a full `alloc_image` → `activate_volume` → `path` →
|
||||
`deactivate_volume` → `free_image` cycle against `.92` with zero code
|
||||
changes to `TrueNASMultipath.pm`: `iscsiadm` logged into both configured
|
||||
portals, `multipathd` built a real `/dev/mapper/<wwid>` device with 2 active
|
||||
paths (`multipath -ll` showed both `active ready running` under one
|
||||
`multibus` group), and teardown cleanly flushed/logged out/removed
|
||||
everything. Notably, TrueNAS's own `.92` only has *one* portal object
|
||||
(listening on `0.0.0.0`) rather than the two per-IP portals the
|
||||
CORE-vs-SCALE table in `docs/architecture.md` §9 describes as the SCALE
|
||||
requirement — `iscsiadm` logging into two different IPs against that same
|
||||
`0.0.0.0`-listening portal still produced two genuine, independent paths,
|
||||
since the Linux initiator/target don't care about TrueNAS's internal
|
||||
portal-object bookkeeping, only the actual IP:port endpoints reached.
|
||||
Documented in `docs/architecture.md` §9 (added 2026-08-30, alongside
|
||||
README/docs coverage for the multipath package that had been missing since
|
||||
its v3.2.0 release; live-confirmation note added 2026-08-31).
|
||||
|
||||
## Implementation branch
|
||||
|
||||
|
||||
@@ -560,7 +560,7 @@ Ships as a separate package, `truenas-proxmox-multipath` (v3.2.0+, #256), becaus
|
||||
|
||||
### What it overrides vs. inherits
|
||||
|
||||
Everything in §5–§6 (`alloc_image`, `free_image`, zvol/extent/target lifecycle) is **inherited unchanged** — `TrueNASMultipath.pm` calls the shared `PVE::Storage::Custom::TrueNAS::_api(...)` helper directly (a fully-qualified sub call, not a virtual method), so any future transport change to that helper (e.g. the WebSocket work in [ADR-012](../.claude/cos/adrs/ADR-012-websocket-transport-v4.md)) applies to multipath automatically with no separate implementation work.
|
||||
Everything in §5–§6 (`alloc_image`, `free_image`, zvol/extent/target lifecycle) is **inherited unchanged** — `TrueNASMultipath.pm` calls the shared `PVE::Storage::Custom::TrueNAS::_api(...)` helper directly (a fully-qualified sub call, not a virtual method), so any future transport change to that helper (e.g. the WebSocket work in [ADR-012](../.claude/cos/adrs/ADR-012-websocket-transport-v4.md)) applies to multipath automatically with no separate implementation work. **Confirmed live 2026-08-31**, not just by code inspection: a full `alloc_image`/`activate_volume`/`path`/`deactivate_volume`/`free_image` cycle against a WebSocket-transport SCALE host (`.92`, 25.04.2.6) worked with zero code changes to this file — see ADR-012's Consequences section.
|
||||
|
||||
Only four methods are overridden, replacing the `iscsi://` model from §3 with a kernel iSCSI + `dm-multipath` model:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user