agent v0.36.2: eject keeps raw mounted (reconnectable, like decommission)
Eject now DetachDrive's the bind under the parent but leaves the raw /mnt/<name> mounted, so disconnect->reconnect re-binds on a non-removable drive. Tests updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -285,18 +285,17 @@ func (s *Server) handleDiskEject(w http.ResponseWriter, r *http.Request, vmid in
|
||||
// self-heal watchdog leaves it alone — an OFFICIAL eject is the only thing that sets this (P3); an
|
||||
// out-of-band unmount records nothing and is healed.
|
||||
s.recordIntent(r.Context(), req.Where, "ejected")
|
||||
// Intermediary model: unmount the felhom-data bind from under the shared parent FIRST (live, fail-
|
||||
// closed in the guest), so nothing references the raw mount before we unmount it.
|
||||
// Intermediary model: eject = DETACH the felhom-data bind from under the shared parent (live, fail-
|
||||
// closed in the guest). The RAW /mnt/<name> host mount is LEFT MOUNTED so a reconnect re-binds it
|
||||
// cleanly (a non-removable drive isn't re-plugged); a raw unmount here would orphan it. Physical
|
||||
// removal is the separate "remove from system" action. (Consistent with decommission.)
|
||||
if s.guestAttach != nil {
|
||||
if err := s.guestAttach.DetachDrive(r.Context(), req.Where); err != nil {
|
||||
s.logger.Warn("local-api: eject guest-detach (intermediary) failed", "vmid", vmid, "where", req.Where, "err", err)
|
||||
s.logger.Error("local-api: eject guest-detach (intermediary)", "vmid", vmid, "where", req.Where, "err", err)
|
||||
writeErr(w, http.StatusBadRequest, "eject failed: "+err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
if err := s.disks.Unmount(r.Context(), req.Where); err != nil {
|
||||
s.logger.Error("local-api: disk eject", "vmid", vmid, "where", req.Where, "err", err)
|
||||
writeErr(w, http.StatusBadRequest, "eject failed: "+err.Error())
|
||||
return
|
||||
}
|
||||
writeOK(w, map[string]any{"vmid": vmid, "ejected": req.Where, "dependent_guests": dependents})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user