summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-François Dagenais <dagenaisj@sonatest.com>2012-01-15 20:11:05 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-30 16:48:13 +0000
commit84bd443d82d8022027180b6ef1f7b7cfc7d06420 (patch)
tree78a49c1c5d4cb8447be2fc7e3edbd84d3bf83aec
parent3e93af369d70d20a53bd7849a62b177b910e6a36 (diff)
downloadopenembedded-core-84bd443d82d8022027180b6ef1f7b7cfc7d06420.tar.gz
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. (From OE-Core rev: 16e09b850dcb44cb1afe411439e40a4bae7e8002) Signed-off-by: Jean-François Dagenais <jeff.dagenais@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/buildstats.bbclass27
1 files changed, 16 insertions, 11 deletions
diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass
index 96c98d409f..f174964cc0 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -61,12 +61,14 @@ 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"
- file = open(bb.data.getVar('DEVFILE', e.data, True), "w")
+ 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))