func (m *Machine) Disks(reg Registry, wg *sync.WaitGroup) { // m is unused fls := sigar.FileSystemList{} fls.Get() // devnames := map[string]bool{} dirnames := map[string]bool{} for _, fs := range fls.List { usage := sigar.FileSystemUsage{} usage.Get(fs.DirName) if !strings.HasPrefix(fs.DevName, "/") { continue } // if _, ok := devnames[fs.DevName]; ok if _, ok := dirnames[fs.DirName]; ok { continue } // devnames[fs.DevName] = true dirnames[fs.DirName] = true reg.UpdateDF(fs, usage) } wg.Done() }
// Update reads usage and fs and updates the corresponding fields in DF. func (md *DF) Update(fs sigar.FileSystem, usage sigar.FileSystemUsage) { md.DevName.Update(fs.DevName) md.DirName.Update(fs.DirName) md.Free.Update(float64(usage.Free << 10)) md.Reserved.Update(float64((usage.Free - usage.Avail) << 10)) md.Total.Update(int64(usage.Total << 10)) md.Used.Update(float64(usage.Used << 10)) md.Avail.Update(int64(usage.Avail << 10)) md.UsePercent.Update(usage.UsePercent()) md.Inodes.Update(int64(usage.Files)) md.Iused.Update(int64(usage.Files - usage.FreeFiles)) md.Ifree.Update(int64(usage.FreeFiles)) if iusePercent := 0.0; usage.Files != 0 { iusePercent = float64(100) * float64(usage.Files-usage.FreeFiles) / float64(usage.Files) md.IusePercent.Update(iusePercent) } }