From c73b6685be4d156fb4fa72e55cfbfe666faabe1d Mon Sep 17 00:00:00 2001 From: HeChuan Date: Fri, 23 Dec 2016 15:50:28 +0800 Subject: [PATCH] fix: division by zero possible some filesystem have zero Inode --- disk/disk_unix.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/disk/disk_unix.go b/disk/disk_unix.go index 3d81331..c305363 100644 --- a/disk/disk_unix.go +++ b/disk/disk_unix.go @@ -24,11 +24,22 @@ func Usage(path string) (*UsageStat, error) { // if could not get InodesTotal, return empty if ret.InodesTotal < ret.InodesFree { return ret, nil - } + } + ret.InodesUsed = (ret.InodesTotal - ret.InodesFree) - ret.InodesUsedPercent = (float64(ret.InodesUsed) / float64(ret.InodesTotal)) * 100.0 ret.Used = (uint64(stat.Blocks) - uint64(stat.Bfree)) * uint64(bsize) - ret.UsedPercent = (float64(ret.Used) / float64(ret.Total)) * 100.0 + + if ret.InodesTotal == 0 { + ret.InodesUsedPercent = 0 + } else { + ret.InodesUsedPercent = (float64(ret.InodesUsed) / float64(ret.InodesTotal)) * 100.0 + } + if ret.Total == 0 { + ret.UsedPercent = 0 + } else { + ret.UsedPercent = (float64(ret.Used) / float64(ret.Total)) * 100.0 + } + return ret, nil }