MCPcopy
hub / github.com/henrygd/beszel / Refresh

Method Refresh

agent/smart.go:69–91  ·  view source on GitHub ↗

Error for missing data Refresh updates SMART data for all known devices

(forceScan bool)

Source from the content-addressed store, hash-verified

67
68// Refresh updates SMART data for all known devices
69func (sm *SmartManager) Refresh(forceScan bool) error {
70 sm.refreshMutex.Lock()
71 defer sm.refreshMutex.Unlock()
72
73 scanErr := sm.ScanDevices(false)
74 if scanErr != nil {
75 slog.Debug("smartctl scan failed", "err", scanErr)
76 }
77
78 devices := sm.devicesSnapshot()
79 var collectErr error
80 for _, deviceInfo := range devices {
81 if deviceInfo == nil {
82 continue
83 }
84 if err := sm.CollectSmart(deviceInfo); err != nil {
85 slog.Debug("smartctl collect failed", "device", deviceInfo.Name, "err", err)
86 collectErr = err
87 }
88 }
89
90 return sm.resolveRefreshError(scanErr, collectErr)
91}
92
93// devicesSnapshot returns a copy of the current device slice to avoid iterating
94// while holding the primary mutex for longer than necessary.

Callers 1

HandleMethod · 0.45

Calls 4

ScanDevicesMethod · 0.95
devicesSnapshotMethod · 0.95
CollectSmartMethod · 0.95
resolveRefreshErrorMethod · 0.95

Tested by

no test coverage detected