Attempt empty path on virDomainBlockStats

libvirt for some backends yields summary domain stats for empty
disk path - which saves us the looping on our side.
This commit is contained in:
Thorsten Behrens 2014-02-21 11:38:41 +01:00 committed by Cole Robinson
parent 08daebe1aa
commit b5c3fe1da5

View File

@ -270,6 +270,7 @@ class vmmDomain(vmmLibvirtObject):
self._enable_disk_poll = False self._enable_disk_poll = False
self._stats_disk_supported = True self._stats_disk_supported = True
self._stats_disk_skip = [] self._stats_disk_skip = []
self._summary_disk_stats_skip = False
self.inspection = vmmInspectionData() self.inspection = vmmInspectionData()
@ -1789,6 +1790,18 @@ class vmmDomain(vmmLibvirtObject):
self._stats_disk_skip = [] self._stats_disk_skip = []
return rd, wr return rd, wr
# Some drivers support this method for getting all usage at once
if not self._summary_disk_stats_skip:
try:
io = self._backend.blockStats('')
if io:
rd = io[1]
wr = io[3]
return rd, wr
except libvirt.libvirtError:
self._summary_disk_stats_skip = True
# did not work, iterate over all disks
for disk in self.get_disk_devices(refresh_if_nec=False): for disk in self.get_disk_devices(refresh_if_nec=False):
dev = disk.target dev = disk.target
if not dev: if not dev: