diff --git a/MDStatMonitoringUnit.cs b/MDStatMonitoringUnit.cs index abfba99..4d55811 100644 --- a/MDStatMonitoringUnit.cs +++ b/MDStatMonitoringUnit.cs @@ -38,6 +38,12 @@ namespace Barsik // 2930264896 blocks super 1.0 [2/2] [UU] // we need last characters in brackets [] int last_pos = lines[i + 1].LastIndexOf(']'); + if (last_pos == -1) + { + // This can happen for inactive RAID devices. Skip this device for now + i += 2; + continue; + } int pos; for (pos = last_pos; pos > 0 && lines[i + 1][pos] != '['; pos--) ; if (lines[i + 1][pos] != '[') knownRaids.Add(0); @@ -94,7 +100,8 @@ namespace Barsik var lines = File.ReadAllLines("/proc/mdstat"); for (int i = 0; i < lines.Length;) { - if (lines[i].StartsWith("md") && i < lines.Length - 1) + if (lines[i].StartsWith("md") && i < lines.Length - 1 && + lines[i + 1].LastIndexOf(']') != -1) { // we found device description // second line of it is as follows: