[oe-commits] Jean-François Dagenais : buildstats: tolerate absence of /proc/diskstats

git at git.openembedded.org git at git.openembedded.org
Mon Jan 16 12:33:53 UTC 2012


Module: openembedded-core.git
Branch: master
Commit: 16e09b850dcb44cb1afe411439e40a4bae7e8002
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=16e09b850dcb44cb1afe411439e40a4bae7e8002

Author: Jean-François Dagenais <dagenaisj at sonatest.com>
Date:   Sun Jan 15 20:11:05 2012 -0500

buildstats: tolerate absence of /proc/diskstats

In OpenVZ containers (and probably lx containers as well),
the diskstats entry is not even present. Use the "NoLogicalDrive"
introduced by Elizabeth Flanagan in such case.

This allows the bitbaking to occure within such containers.

Signed-off-by: Jean-François Dagenais <jeff.dagenais at gmail.com>

---

 meta/classes/buildstats.bbclass |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass
index 4cd8fe6..9690a04 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -61,11 +61,13 @@ def set_device(e):
     # we do not collect diskstats as the method to collect meaningful statistics
     # for these fs types requires a bit more research. 
     ############################################################################
-    for line in open("/proc/diskstats", "r"):
-        if majordev == int(line.split()[0]) and minordev == int(line.split()[1]):
-           rdev=line.split()[2]
-        else:
-           rdev="NoLogicalDevice"
+    rdev="NoLogicalDevice"
+    try:
+        for line in open("/proc/diskstats", "r"):
+            if majordev == int(line.split()[0]) and minordev == int(line.split()[1]):
+               rdev=line.split()[2]
+    except:
+        pass
     file = open(e.data.getVar('DEVFILE', True), "w")
     file.write(rdev)
     file.close()
@@ -82,12 +84,15 @@ def get_diskstats(dev):
     # For info on what these are, see kernel doc file iostats.txt
     ############################################################################
     DSTAT_KEYS = ['ReadsComp', 'ReadsMerged', 'SectRead', 'TimeReads', 'WritesComp', 'SectWrite', 'TimeWrite', 'IOinProgress', 'TimeIO', 'WTimeIO']  
-    for x in open("/proc/diskstats", "r"):
-        if dev in x:
-            diskstats_val = x.rstrip().split()[4:]
-    diskstats = dict(itertools.izip(DSTAT_KEYS, diskstats_val))        
+    try:
+        for x in open("/proc/diskstats", "r"):
+            if dev in x:
+                diskstats_val = x.rstrip().split()[4:]
+    except IOError as e:
+        return
+    diskstats = dict(itertools.izip(DSTAT_KEYS, diskstats_val))
     return diskstats
-    
+
 def set_diskdata(var, dev, data):
     data.setVar(var, get_diskstats(dev))
 





More information about the Openembedded-commits mailing list