| 197 | } |
| 198 | |
| 199 | func parseDiskStats(r io.Reader) (map[string]map[int]string, error) { |
| 200 | var ( |
| 201 | diskStats = map[string]map[int]string{} |
| 202 | scanner = bufio.NewScanner(r) |
| 203 | ) |
| 204 | |
| 205 | for scanner.Scan() { |
| 206 | parts := strings.Fields(scanner.Text()) |
| 207 | if len(parts) < 4 { // we strip major, minor and dev |
| 208 | return nil, fmt.Errorf("invalid line in %s: %s", procFilePath("diskstats"), scanner.Text()) |
| 209 | } |
| 210 | dev := parts[2] |
| 211 | diskStats[dev] = map[int]string{} |
| 212 | for i, v := range parts[3:] { |
| 213 | diskStats[dev][i] = v |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | return diskStats, scanner.Err() |
| 218 | } |