2 Commits
Author SHA1 Message Date
Kevin AdamsandClaude Opus 5.5 1bbcba136b fix: let path() return a placeholder for extent-less zvols (#292)
PVE's content delete (pvesm free, GUI Remove) and qm destroy call path()
only for the owner/vtype before vdisk_free. Dying when the zvol had no
iSCSI extent made orphans from failed allocs or v2-era leftovers
undeletable through PVE, even though free_image already handles the
no-extent case. activate_volume and qemu_blockdev_options keep dying on
the same condition, so the placeholder can never be opened by a VM.

Adds the first Perl unit-test harness (t/, prove in CI lint job) with a
mock TrueNAS API so plugin entry points can be tested off a PVE node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 11:57:43 -04:00
Kevin AdamsandClaude Sonnet 4.6 0a17a30838 docs: v2.x → v3.0 migration guides — beginner, advanced, troubleshooting (#228)
Three new docs covering the full migration path from freenas-proxmox v2.x
to truenas-proxmox v3.0:

- migrating-from-v2.md: step-by-step beginner guide with pre-migration
  checklist, TPM detection, capacity notes, Delete source semantics, FAQ
- migration-advanced.md: architecture diff, config field mapping, HA/portal
  failure warnings, bulk migration planning, rollback procedures
- migration-troubleshooting.md: Move Disk failure recovery matrix, dangling
  resource cleanup, API key expiration, common 422 errors

Reviewed by beginner and advanced user minions; incorporated feedback on
concept explanations, safety-critical gaps (HA, SPOF portal, concurrent
cutover staggering), and production edge cases.

Closes #228

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:44:39 -04:00