[libvirt] [PATCHv2 4/6] Use virGetUninstalledDir() in src/storage/storage_backend_disk.c

Nehal J Wani nehaljw.kkd1 at gmail.com
Tue Mar 25 08:23:14 UTC 2014


src/storage/storage_backend_disk.c:
   *Check if libvirtd is running uninstalled from a build tree and change
    parthelper_path accordingly

---
 src/storage/storage_backend_disk.c |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c
index 81201fd..bb29d39 100644
--- a/src/storage/storage_backend_disk.c
+++ b/src/storage/storage_backend_disk.c
@@ -261,7 +261,18 @@ virStorageBackendDiskReadPartitions(virStoragePoolObjPtr pool,
      * -              normal   metadata 100027630080 100030242304      2612736
      *
      */
-    virCommandPtr cmd = virCommandNewArgList(PARTHELPER,
+
+    char *uninstalledDir = virGetUninstalledDir();
+    char *parthelper_path = NULL;
+
+    if (uninstalledDir && virAsprintf(&parthelper_path,
+                                      "%s/../../src/libvirt_parthelper",
+                                      uninstalledDir) < 0)
+        return -1;
+    else if (virAsprintf(&parthelper_path, PARTHELPER) < 0)
+        return -1;
+
+    virCommandPtr cmd = virCommandNewArgList(parthelper_path,
                                              pool->def->source.devices[0].path,
                                              NULL);
     struct virStorageBackendDiskPoolVolData cbdata = {
@@ -277,6 +288,7 @@ virStorageBackendDiskReadPartitions(virStoragePoolObjPtr pool,
                            virStorageBackendDiskMakeVol,
                            &cbdata);
     virCommandFree(cmd);
+    VIR_FREE(parthelper_path);
     return ret;
 }
 
@@ -301,7 +313,18 @@ virStorageBackendDiskMakePoolGeometry(size_t ntok ATTRIBUTE_UNUSED,
 static int
 virStorageBackendDiskReadGeometry(virStoragePoolObjPtr pool)
 {
-    virCommandPtr cmd = virCommandNewArgList(PARTHELPER,
+    char *uninstalledDir = virGetUninstalledDir();
+    char *parthelper_path = NULL;
+
+    if (uninstalledDir && virAsprintf(&parthelper_path,
+                                      "%s/../../src/libvirt_parthelper",
+                                      uninstalledDir) < 0)
+        return -1;
+    else if (virAsprintf(&parthelper_path, PARTHELPER) < 0)
+        return -1;
+
+
+    virCommandPtr cmd = virCommandNewArgList(parthelper_path,
                                              pool->def->source.devices[0].path,
                                              "-g",
                                              NULL);
@@ -312,6 +335,7 @@ virStorageBackendDiskReadGeometry(virStoragePoolObjPtr pool)
                            virStorageBackendDiskMakePoolGeometry,
                            pool);
     virCommandFree(cmd);
+    VIR_FREE(parthelper_path);
     return ret;
 }
 
-- 
1.7.1




More information about the libvir-list mailing list