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

Function parseDevices

bcachefs/get.go:410–467  ·  view source on GitHub ↗
(fsPath string)

Source from the content-addressed store, hash-verified

408}
409
410func parseDevices(fsPath string) (map[string]*DeviceStats, error) {
411 entries, err := os.ReadDir(fsPath)
412 if err != nil {
413 return nil, err
414 }
415
416 devices := make(map[string]*DeviceStats)
417 for _, entry := range entries {
418 if !entry.IsDir() || !strings.HasPrefix(entry.Name(), "dev-") {
419 continue
420 }
421 device := strings.TrimPrefix(entry.Name(), "dev-")
422 devPath := filepath.Join(fsPath, entry.Name())
423
424 stats := &DeviceStats{
425 Label: readSysfsFile(filepath.Join(devPath, "label")),
426 State: readSysfsFile(filepath.Join(devPath, "state")),
427 IODone: make(map[string]map[string]uint64),
428 IOErrors: make(map[string]uint64),
429 }
430
431 if bucketSizeRaw := readSysfsFile(filepath.Join(devPath, "bucket_size")); bucketSizeRaw != "" {
432 bucketSize, err := parseHumanReadableBytes(bucketSizeRaw)
433 if err != nil {
434 return nil, err
435 }
436 stats.BucketSizeBytes = bucketSize
437 }
438
439 nbuckets, err := readUintFile(filepath.Join(devPath, "nbuckets"))
440 if err != nil {
441 return nil, err
442 }
443 stats.Buckets = nbuckets
444
445 durability, err := readUintFile(filepath.Join(devPath, "durability"))
446 if err != nil {
447 return nil, err
448 }
449 stats.Durability = durability
450
451 ioDone, err := parseDeviceIODone(filepath.Join(devPath, "io_done"))
452 if err != nil {
453 return nil, err
454 }
455 stats.IODone = ioDone
456
457 ioErrors, err := parseDeviceIOErrors(filepath.Join(devPath, "io_errors"))
458 if err != nil {
459 return nil, err
460 }
461 stats.IOErrors = ioErrors
462
463 devices[device] = stats
464 }
465
466 return devices, nil
467}

Callers 1

readFilesystemStatsMethod · 0.85

Calls 6

readSysfsFileFunction · 0.85
parseHumanReadableBytesFunction · 0.85
readUintFileFunction · 0.85
parseDeviceIODoneFunction · 0.85
parseDeviceIOErrorsFunction · 0.85
NameMethod · 0.80

Tested by

no test coverage detected