MCPcopy Create free account
hub / github.com/prometheus/procfs / parseProcDiskstats

Function parseProcDiskstats

blockdevice/stats.go:266–306  ·  view source on GitHub ↗
(r io.Reader)

Source from the content-addressed store, hash-verified

264}
265
266func parseProcDiskstats(r io.Reader) ([]Diskstats, error) {
267 var (
268 diskstats []Diskstats
269 scanner = bufio.NewScanner(r)
270 err error
271 )
272 for scanner.Scan() {
273 d := &Diskstats{}
274 d.IoStatsCount, err = fmt.Sscanf(scanner.Text(), procDiskstatsFormat,
275 &d.MajorNumber,
276 &d.MinorNumber,
277 &d.DeviceName,
278 &d.ReadIOs,
279 &d.ReadMerges,
280 &d.ReadSectors,
281 &d.ReadTicks,
282 &d.WriteIOs,
283 &d.WriteMerges,
284 &d.WriteSectors,
285 &d.WriteTicks,
286 &d.IOsInProgress,
287 &d.IOsTotalTicks,
288 &d.WeightedIOTicks,
289 &d.DiscardIOs,
290 &d.DiscardMerges,
291 &d.DiscardSectors,
292 &d.DiscardTicks,
293 &d.FlushRequestsCompleted,
294 &d.TimeSpentFlushing,
295 )
296 // The io.EOF error can be safely ignored because it just means we read fewer than
297 // the full 20 fields.
298 if err != nil && !errors.Is(err, io.EOF) {
299 return diskstats, err
300 }
301 if d.IoStatsCount >= 14 {
302 diskstats = append(diskstats, *d)
303 }
304 }
305 return diskstats, scanner.Err()
306}
307
308// SysBlockDevices lists the device names from /sys/block/<dev>.
309func (fs FS) SysBlockDevices() ([]string, error) {

Callers 1

ProcDiskstatsMethod · 0.85

Calls 1

ErrMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…