[poky] [PATCH] buildstats: tolerate absence of /proc/diskstats
Saul Wold
sgw at linux.intel.com
Tue Jan 17 12:58:02 PST 2012
On 01/15/2012 05:11 PM, Jean-François Dagenais wrote:
> From: Jean-François Dagenais<dagenaisj at sonatest.com>
>
> 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))
>
Merged into OE-Core
For future reference, please send patches for the meta layer to
openembedded-core at lists.openembedded.org, as the meta layer is really
OE-Core
Thanks
Sau!
More information about the poky
mailing list