in metric/system/cgroup/cgv1/blkio.go [276:313]
func parseBlkioValue(line string) (blkioValue, error) {
fields := strings.FieldsFunc(line, isColonOrSpace)
if len(fields) != 3 && len(fields) != 4 {
return blkioValue{}, cgcommon.ErrInvalidFormat
}
major, err := strconv.ParseUint(fields[0], 10, 64)
if err != nil {
return blkioValue{}, err
}
minor, err := strconv.ParseUint(fields[1], 10, 64)
if err != nil {
return blkioValue{}, err
}
var value uint64
var operation string
if len(fields) == 3 {
value, err = cgcommon.ParseUint([]byte(fields[2]))
if err != nil {
return blkioValue{}, err
}
} else {
operation = strings.ToLower(fields[2])
value, err = cgcommon.ParseUint([]byte(fields[3]))
if err != nil {
return blkioValue{}, err
}
}
return blkioValue{
DeviceID: DeviceID{major, minor},
Operation: operation,
Value: value,
}, nil
}