From patchwork Mon Feb 4 10:03:35 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel, 1/1] monitordisk.py: disable the inode checking for some fs Date: Mon, 04 Feb 2013 10:03:35 -0000 From: Robert Yang X-Patchwork-Id: 43977 Message-Id: To: Cc: Zhenfeng.Zhao@windriver.com There is an error when use disk monitor on btrfs: WARNING: The free inode of rootfs is running low (0.000K left) ERROR: Immediately abort since the disk space monitor action is "ABORT"! This is beucase some fs formats' statvfs.f_files (inodes) is zero, thus the statvfs.f_favail (free inodes) is zero, too, this a feature of the fs, we disable the inode checking for such a fs. [YOCTO #3609] Signed-off-by: Robert Yang --- bitbake/lib/bb/monitordisk.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bitbake/lib/bb/monitordisk.py b/bitbake/lib/bb/monitordisk.py index 2bd4881..1c1e614 100644 --- a/bitbake/lib/bb/monitordisk.py +++ b/bitbake/lib/bb/monitordisk.py @@ -128,7 +128,7 @@ def getDiskData(BBDirs, configuration): if not os.path.exists(path): bb.utils.mkdirhier(path) mountedDev = getMountedDev(path) - devDict[mountedDev] = action, path, minSpace, minInode + devDict[mountedDev] = [action, path, minSpace, minInode] return devDict @@ -231,6 +231,13 @@ class diskMonitor: freeInode = st.f_favail if self.devDict[dev][3] and freeInode < self.devDict[dev][3]: + # Some fs formats' (e.g., btrfs) statvfs.f_files (inodes) is + # zero, this is a feature of the fs, we disable the inode + # checking for such a fs. + if st.f_files == 0: + logger.warn("Inode check for %s is unavaliable, remove it from disk monitor" % dev) + self.devDict[dev][3] = None + continue # Always show warning, the self.checked would always be False if the action is WARN if self.preFreeI[dev] == 0 or self.preFreeI[dev] - freeInode > self.inodeInterval and not self.checked[dev]: logger.warn("The free inode of %s is running low (%.3fK left)" % (dev, freeInode / 1024.0))