[libvirt] [PATCH 04/11] qemu: extract helper to get block info

Francesco Romani fromani at redhat.com
Fri Aug 29 07:15:25 UTC 2014


Extract qemuDiskGetBlockInfo helper.
This way, the very same code will be used both
by existing qemuDomainGetBlockInfo API and by
the new bulk stats API.

Signed-off-by: Francesco Romani <fromani at redhat.com>
---
 src/qemu/qemu_driver.c | 54 ++++++++++++++++++++++++++++++++++----------------
 1 file changed, 37 insertions(+), 17 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index e7dd5ed..ee0a576 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -195,6 +195,12 @@ static int qemuDiskGetBlockStats(virQEMUDriverPtr driver,
                                  virDomainDiskDefPtr disk,
                                  struct qemuBlockStats *stats);
 
+static int qemuDiskGetBlockInfo(virQEMUDriverPtr driver,
+                                virDomainObjPtr vm,
+                                virDomainDiskDefPtr disk,
+                                const char *path,
+                                virDomainBlockInfoPtr info);
+
 
 virQEMUDriverPtr qemu_driver = NULL;
 
@@ -10451,29 +10457,16 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
                        virDomainBlockInfoPtr info,
                        unsigned int flags)
 {
-    virQEMUDriverPtr driver = dom->conn->privateData;
-    virDomainObjPtr vm;
-    int ret = -1;
-    int fd = -1;
-    off_t end;
-    virStorageSourcePtr meta = NULL;
-    virDomainDiskDefPtr disk = NULL;
-    struct stat sb;
     int idx;
-    int format;
-    int activeFail = false;
-    virQEMUDriverConfigPtr cfg = NULL;
-    char *alias = NULL;
-    char *buf = NULL;
-    ssize_t len;
+    int ret = -1;
+    virQEMUDriverPtr driver = dom->conn->privateData;
+    virDomainObjPtr vm = NULL;
 
     virCheckFlags(0, -1);
 
     if (!(vm = qemuDomObjFromDomain(dom)))
         return -1;
 
-    cfg = virQEMUDriverGetConfig(driver);
-
     if (virDomainGetBlockInfoEnsureACL(dom->conn, vm->def) < 0)
         goto cleanup;
 
@@ -10489,7 +10482,34 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
         goto cleanup;
     }
 
-    disk = vm->def->disks[idx];
+    ret = qemuDiskGetBlockInfo(driver, vm, vm->def->disks[idx], path, info);
+
+ cleanup:
+    virObjectUnlock(vm);
+    return ret;
+}
+
+
+static int
+qemuDiskGetBlockInfo(virQEMUDriverPtr driver,
+                     virDomainObjPtr vm,
+                     virDomainDiskDefPtr disk,
+                     const char *path,
+                     virDomainBlockInfoPtr info)
+{
+    int ret = -1;
+    int fd = -1;
+    off_t end;
+    virQEMUDriverConfigPtr cfg = NULL;
+    virStorageSourcePtr meta = NULL;
+    struct stat sb;
+    int format;
+    int activeFail = false;
+    char *alias = NULL;
+    char *buf = NULL;
+    ssize_t len;
+
+    cfg = virQEMUDriverGetConfig(driver);
 
     if (virStorageSourceIsLocalStorage(disk->src)) {
         if (!disk->src->path) {
-- 
1.9.3




More information about the libvir-list mailing list