From 3825664aedec5562137807f9cc26ad906a764a50 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 1 Jul 2026 21:21:59 +0200 Subject: [PATCH] v0.58.0: report GuestPath/BoundUnderParent for a registry-sourced /disks row MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Impl-2a registry union row omitted GuestPath + BoundUnderParent, so the controller read a registry-only (raw) drive as "Leválasztva" despite being mounted + bound live. Populate them like the Observe path (StablePathForRaw + boundUnderParent). Last piece of first-class raw-drive support. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 10 ++++++++++ cmd/felhom-agent/main.go | 2 +- internal/localapi/disks.go | 11 +++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8758763..5a8005c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## v0.58.0 — report GuestPath/BoundUnderParent for a registry-sourced drive in /disks (2026-07-01) + +Last piece of first-class raw-drive support: the `/disks` union row for a registry-sourced drive (Impl-2a +— a drive with no PVE storage) omitted `GuestPath` + `BoundUnderParent`, so the controller read it as +"Leválasztva" (disconnected) even though it was mounted + bound + live in the guest. + +- **`internal/localapi/disks.go` handleDisks registry union:** populate `GuestPath` (`StablePathForRaw`) + + `BoundUnderParent` (`boundUnderParent`) on the registry row, identical to the Observe path — so a + registry-only drive reports its true bound/active state. `go build/vet/test ./...` clean. + ## v0.57.0 — re-assert a RAW drive's guest-bind (ReassertGuestBinds mount-table fallback) (2026-07-01) Completes the raw-drive durability the v0.56.0 fix started. `ReassertGuestBinds` (the startup / drive- diff --git a/cmd/felhom-agent/main.go b/cmd/felhom-agent/main.go index 2bd8ee8..aec85d4 100644 --- a/cmd/felhom-agent/main.go +++ b/cmd/felhom-agent/main.go @@ -45,7 +45,7 @@ import ( // version is the agent version. Overridable at build time with // -ldflags "-X main.version="; defaults to the in-repo CHANGELOG version. -var version = "0.57.0" +var version = "0.58.0" // runGuestHook is the PVE pre-start hook body (`felhom-agent guest-hook `). On the // pre-start phase it creates placeholder dirs for any absent bind-mount source so the guest always boots diff --git a/internal/localapi/disks.go b/internal/localapi/disks.go index 40277c3..c7394e9 100644 --- a/internal/localapi/disks.go +++ b/internal/localapi/disks.go @@ -223,12 +223,19 @@ func (s *Server) handleDisks(w http.ResponseWriter, r *http.Request, vmid int) { if d.MountPath == "" || seen[d.MountPath] { continue } - out = append(out, DiskInfo{ + di := DiskInfo{ Name: d.Name, Type: d.Type, State: "attached", MountPath: d.MountPath, DurableID: d.DurableID, Role: string(storage.RoleUserData), GuestAttached: boundPaths[d.MountPath], - }) + } + // Intermediary model: report the stable in-guest path + whether felhom-data is bound live, + // exactly like the Observe path — else the controller reads a registry drive as "Leválasztva". + if gp := StablePathForRaw(d.MountPath); gp != "" { + di.GuestPath = gp + di.BoundUnderParent = s.boundUnderParent(r.Context(), vmid, gp) + } + out = append(out, di) } } else { s.logger.Warn("disks: registry drive union skipped", "err", derr)