From 884988cb2afded70606869f1904b1ae50d4a038e Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Mon, 1 Jun 2026 18:50:20 +0300 Subject: [PATCH] Fix audit hang on SAS HBAs: skip scsi host scan for SAS hosts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Writing to /sys/class/scsi_host/hostX/scan on SAS controllers (e.g. Adaptec smartpqi/PM8222-SHBA) triggers sas_user_scan which blocks indefinitely, causing the audit to hang forever. Skip hosts that appear under /sys/class/sas_host/ — SAS topology is discovered by the driver. Co-Authored-By: Claude Sonnet 4.6 --- audit/internal/collector/storage.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/audit/internal/collector/storage.go b/audit/internal/collector/storage.go index aec8d54..f89bc2c 100644 --- a/audit/internal/collector/storage.go +++ b/audit/internal/collector/storage.go @@ -36,6 +36,13 @@ func bestEffortRescanHotplugStorage() { slog.Info("storage: scsi host scan skipped", "pattern", scsiHostScanGlob, "err", err) } else { for _, path := range hostPaths { + // SAS HBAs (e.g. smartpqi) block indefinitely in sas_user_scan when + // written to — SAS topology is discovered by the driver itself. + host := filepath.Base(filepath.Dir(path)) + if _, err := os.Stat("/sys/class/sas_host/" + host); err == nil { + slog.Info("storage: scsi host scan skipped (SAS host)", "path", path) + continue + } if err := hotplugWriteFile(path, []byte("- - -\n"), 0644); err != nil { slog.Info("storage: scsi host scan write failed", "path", path, "err", err) continue