Commit Graph
20 Commits
Author SHA1 Message Date
DrOwlandClaude Opus 5.5 30034e7aa3 Map storage devices to their PCI storage controller
Each disk in /api/hardware now carries a controller_slot, resolved from
the disk's sysfs device path: the deepest PCI address in that path is the
controller (bridges sit above it), normalised to lspci's slot format so it
matches pci_devices[].slot directly. NVMe falls back to the controller's
own sysfs link when the namespace resolves to a subsystem with no PCI
parent; zvols and other virtual devices get None.

Hardware page:
- The disk dialog shows its storage controller (click through to the
  controller), and the PCI device dialog lists the disks attached to it.
- Storage controllers in the PCI Devices list get a badge with the
  number of attached disks.

Storage view:
- /api/storage returns controller_slot on each physical disk plus a
  controllers map (slot -> class, vendor, device, subsystem name,
  driver), built from the cached `lspci -vmm` output so the Storage view
  doesn't need the heavier /api/hardware enumeration.
- "Physical Disks & SMART Status" can group disks under their storage
  controller, with a header showing the controller name, slot, driver
  and disk count. Groups follow PCI slot order; disks with no resolvable
  controller are listed last. USB disks keep their own section.
- The disk details dialog shows the storage controller on the Overview
  tab.
- Grouping is opt-in via a new Storage Display card in Settings, stored
  per browser (localStorage) and synced across open views, following the
  existing nav-tab-order preference pattern. Off by default.

Also:
- Treat "IDE interface" as a storage controller, so SATA controllers left
  in BIOS IDE mode (e.g. Intel 7 Series, ata_piix) appear in pci_devices
  and disks behind them can be mapped.
- lspci prints "Device xxxx" when it has no subsystem name; that
  placeholder is ignored so the chip name is shown instead.
- Add the missing sdevice field to the PCIDevice type.

Tests cover the sysfs path -> controller slot rule against real paths
from two PVE 9 hosts (SAS HBA, AHCI SATA, SATA in BIOS IDE mode, USB
behind a hub, NVMe behind chipset bridges), the non-zero PCI domain case
(Intel VMD), the NVMe multipath fallback, and get_storage_controllers'
lspci parsing including the "Device xxxx" placeholder and driver lookup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 11:47:00 +00:00
MacRimi abf0f7fbf8 identify storage temperature sensors by their actual block device (#315) 2026-08-27 23:18:50 +02:00
MacRimi 834795d6d9 update gpu-switch-mode-indicator.tsx 2026-04-19 12:26:52 +02:00
MacRimi 68ca68c6f1 update hardware.tsx 2026-04-17 20:56:07 +02:00
MacRimi 75c6f74fc4 update nstall_coral_pve9.sh 2026-04-17 19:53:17 +02:00
MacRimi 774cbe4c9d Update AppImage 2025-11-13 18:32:44 +01:00
MacRimi 55394cbf09 Update AppImage 2025-11-04 12:47:26 +01:00
MacRimi 37fade8f7a Update AppImage 2025-10-29 22:16:40 +01:00
MacRimi 699c7df798 Update AppImage 2025-10-14 18:51:39 +02:00
MacRimi f49ffe3cb0 Update AppImage 2025-10-14 15:34:19 +02:00
MacRimi 8f93e43bb3 Update AppImage 2025-10-14 11:37:30 +02:00
MacRimi 658ce390e2 Update AppImage 2025-10-07 00:35:23 +02:00
MacRimi 78c56e4f28 Update AppImage 2025-10-06 22:39:37 +02:00
MacRimi 73e6194551 Update AppImage 2025-10-06 22:19:42 +02:00
MacRimi a689607e98 Update AppImage 2025-10-06 18:52:58 +02:00
MacRimi b6b3e27408 Update AppImage 2025-10-06 18:29:00 +02:00
MacRimi ac30bd6e51 Update hardware.ts 2025-10-06 18:15:56 +02:00
MacRimi 047ec982f4 Update AppImage 2025-10-06 18:02:40 +02:00
MacRimi 874ab093d5 Update AppImage 2025-10-06 16:40:14 +02:00
MacRimi be7a2d7f41 Update AppImage 2025-10-06 14:17:14 +02:00