summaryrefslogtreecommitdiff
path: root/virtManager
diff options
context:
space:
mode:
authorThorsten Behrens <tbehrens@suse.com>2014-02-21 11:38:41 +0100
committerCole Robinson <crobinso@redhat.com>2014-02-24 21:38:20 -0500
commitb5c3fe1da5f67e0a83a3bc5c9358cbc779157354 (patch)
tree3cc53dfc67fc006da474684700b630d5df0c15e7 /virtManager
parent08daebe1aa8490ef8347b35ddb007a35e3aef042 (diff)
downloadvirt-manager-b5c3fe1da5f67e0a83a3bc5c9358cbc779157354.tar.gz
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.
Diffstat (limited to 'virtManager')
-rw-r--r--virtManager/domain.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/virtManager/domain.py b/virtManager/domain.py
index 45ab6ee6..db21ae41 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -270,6 +270,7 @@ class vmmDomain(vmmLibvirtObject):
self._enable_disk_poll = False
self._stats_disk_supported = True
self._stats_disk_skip = []
+ self._summary_disk_stats_skip = False
self.inspection = vmmInspectionData()
@@ -1789,6 +1790,18 @@ class vmmDomain(vmmLibvirtObject):
self._stats_disk_skip = []
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):
dev = disk.target
if not dev: