Files
felhom-controller/REPORT.md
T

5.2 KiB

REPORT — demo storage hygiene: USB class-badge suppression (v0.128.1) + legacy PVE dir-storage retirement

Date: 2026-07-13 · Version: controller v0.128.1 (commit d752f15 on main) · Host op on demo-felhom PVE (192.168.0.162), config-level only — no data moved or deleted. Sequencing note: the TASK was numbered v0.127.3 and sequenced BEFORE the .fab upload task, but v0.127.3 (escrow reveal copy) and v0.128.0 (upload) had already shipped — Part 1 ships as v0.128.1; content unaffected. Baseline at start: 61c1391 (v0.128.0 REPORT), live Gitea == local.

Part 1 — controller: suppress the class badge for USB drives (ruling F5)

storage.html classTag(d): if(d.type==='usb') return ''; ahead of the class branches — one guard covers both render sites (card badges L324; metarow L343, which additionally guards on d.class). Non-USB storages keep the hint. Hub-report ClassHint UNCHANGED (UI-only suppression). No existing test pinned the badge → new TestStorageTemplate_USBClassBadgeSuppressed (renders the production template tree, asserts the guard exists AND precedes the class branches). Red-proof: guard line removed → FAIL "classTag USB guard missing from the storage page"; restored → PASS. Green gate: full module build/vet/test clean; template gates (id/emoji/native-confirm) green.

Deployed: image 0.128.1 → demo guest 9201, Up (healthy). Drill guest skipped (task: optional, no behavioral dependency).

Part 2 — host op: retire felhom-usb + felhom-flash PVE dir storages

Gate evidence (all PASS)

G1 — mount provenance: both mounts are agent-owned systemd units, independent of the PVE entries:

  • /mnt/felhom-usb = /dev/sdc1 (ext4) via mnt-felhom\x2dusb.mount — "Managed by felhom-agent", What=/dev/disk/by-uuid/da9e7089-cf8e-4617-adcb-a377743fae00, WantedBy=multi-user.target.
  • /mnt/felhom-flash = /dev/sdd1 (ext4) via mnt-felhom\x2dflash.mount — same shape, What=/dev/disk/by-uuid/81a26531-62d8-408d-812f-a178b1d35310.
  • /etc/fstab: no entries for either. The PVE storage.cfg blocks carried is_mountpoint 1 (checker, not owner) and no mkdir.

G2 — registry membership: /var/lib/felhom-agent/drive-intents.json (read-only) lists both UUIDs as "enrolled" (plus teszt_enroll's). Guest binds live under the drives tree: mp8 /mnt/felhom-drives (no backup=1); /mnt/felhom-drives/felhom-{usb,flash} are [/felhom-data] subdir mounts of the same devices (Model A). Controller settings register both stable paths (Tárhely (felhom-usb) / Tárhely (felhom-flash)).

G3 — zero references: grep -r 'felhom-usb\|felhom-flash' /etc/pve/ → only the two storage.cfg blocks themselves + /etc/pve/.rrd metric rings (auto-generated stats, not config). No jobs.cfg/vzdump/replication; both storages' dump/ dirs EMPTY. No customer app on either drive: the only stack referencing them is the protected infra FileBrowser, via the agent-owned /mnt/felhom-drives/... bind chain — unaffected by the PVE entry. (Live re-verified, not from the screenshot.)

storage.cfg blocks removed (before-state, verbatim)

dir: felhom-usb
	path /mnt/felhom-usb
	content backup
	is_mountpoint 1

dir: felhom-flash
	path /mnt/felhom-flash
	content backup
	is_mountpoint 1

Removal + verification

Pre-removal marker files created under each drive's felhom-data namespace and confirmed readable from the guest. Then pvesm remove felhom-usb && pvesm remove felhom-flash → OK. Verified in order:

  1. Host mounts intact, same sources: /mnt/felhom-usb = /dev/sdc1, /mnt/felhom-flash = /dev/sdd1; drives-tree subdir mounts intact (/dev/sdc1[/felhom-data], /dev/sdd1[/felhom-data]).
  2. Guest binds intact: both markers still readable from guest 9201 post-removal (retire-check-2026-07-13); markers removed afterwards.
  3. Meghajtók data: agent GET /disks (pinned local-API token, value never echoed) returns both drives registry-sourced — type: usb, role: user-data, durable-ids intact, class: "" (consistent with teszt_enroll and Part 1), mount+guest paths intact.
  4. storage.cfg clean: zero felhom-usb|felhom-flash matches; pvesm status lists only local, local-lvm, felhom-pbs, felhom-offsite — the untouchables all present and active.

Post-op: controller Up (healthy) on 0.128.1; agent journal (last 10 min) free of error/warn/detach — no false detach from the registry-sourced watchdog.

Observations

  • The guest-bind mounts are [/felhom-data] subdir mounts (Model A) — a marker written at <drive>/felhom-data/ on the host appears at the guest drive ROOT (/mnt/felhom-drives/<n>/). First marker check looked one level too deep; corrected before the removal.
  • felhom-flash still carries empty PVE-era skeleton dirs on-disk (images/ private/ snippets/ template/ dump/) from a past content=all era; harmless, deliberately NOT cleaned (task §12: no touching drive contents).
  • The /etc/pve/.rrd stats ring keeps historical series for the removed storages; it's append-only telemetry and stops updating on its own — not a reference.
  • The demo node now matches the fresh-install storage shape: no legacy dir: storages; drives are registry+units-sourced only.