mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-24 04:33:17 +00:00
58347f0c4f
A SMART row that reports no serial, smartctl's standby row among them, takes the serial the host's Unraid inventory reports for the same disk: the adapter shows it and the disk's metrics target reads it. The SMART and disk I/O writers keyed the row on its own WWN or host/device key instead, so the chart read a key nothing wrote and the disk's temperature and I/O history never appeared. The I/O writer did the same for an Unraid disk with no SMART reading. HostSMARTDiskMetricID now takes the serial through the adapter's own rule (hostSMARTDiskSerial over matchUnraidDisk), and the I/O writer keys a device without a SMART reading by its Unraid serial before the Proxmox and host/device fallbacks. Source IDs keep the row's own identity, so registry keys and rehydration are unchanged. That rule matches by device path alone, so it now skips a path several SMART rows share. Controller members behind one block device would otherwise all take the device's serial and merge into one disk, and the I/O writer's guard against filing an aggregate counter under a member would stop working. That guard now compares every row on the path by its own identity, standby rows and legacy "sdc [sat]" labels included, so an aggregate counter never lands under one member. The I/O writer also refuses a device that several Unraid rows name. Samples already written under the old keys stay where they are. The chart did not read them while the Unraid row named the disk, and a device-keyed series can hold another disk's samples once device letters move, so they are not folded into the serial's history.