[libvirt] [PATCH v1 3/5] storage: Introduce storagePoolLookupByPath

Michal Privoznik mprivozn at redhat.com
Thu Nov 27 13:55:47 UTC 2014


While this could be exposed as a public API, it's not done yet as
there's no demand for that yet. Anyway, this is just preparing
the environment for easier volume creation on the destination.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/storage/storage_driver.c | 36 ++++++++++++++++++++++++++++++++++++
 src/storage/storage_driver.h |  4 ++++
 2 files changed, 40 insertions(+)

diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 23b63f5..a4f1030 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -1466,6 +1466,42 @@ storageVolLookupByPath(virConnectPtr conn,
     return ret;
 }
 
+virStoragePoolPtr
+storagePoolLookupByPath(virConnectPtr conn,
+                        const char *path)
+{
+    size_t i;
+    virStoragePoolPtr ret = NULL;
+    char *cleanpath;
+
+    cleanpath = virFileSanitizePath(path);
+    if (!cleanpath)
+        return NULL;
+
+    storageDriverLock();
+    for (i = 0; i < driver->pools.count && !ret; i++) {
+        virStoragePoolObjPtr pool = driver->pools.objs[i];
+
+        virStoragePoolObjLock(pool);
+
+        if (!virStoragePoolObjIsActive(pool)) {
+           virStoragePoolObjUnlock(pool);
+           continue;
+        }
+
+        if (STREQ(path, pool->def->target.path)) {
+            ret = virGetStoragePool(conn, pool->def->name, pool->def->uuid,
+                                    NULL, NULL);
+        }
+
+        virStoragePoolObjUnlock(pool);
+    }
+
+    VIR_FREE(cleanpath);
+    storageDriverUnlock();
+    return ret;
+}
+
 
 static int
 storageVolDeleteInternal(virStorageVolPtr obj,
diff --git a/src/storage/storage_driver.h b/src/storage/storage_driver.h
index b805ddd..b51760a 100644
--- a/src/storage/storage_driver.h
+++ b/src/storage/storage_driver.h
@@ -57,6 +57,10 @@ int virStorageFileGetMetadata(virStorageSourcePtr src,
 int virStorageTranslateDiskSourcePool(virConnectPtr conn,
                                       virDomainDiskDefPtr def);
 
+virStoragePoolPtr
+storagePoolLookupByPath(virConnectPtr conn,
+                        const char *path);
+
 int storageRegister(void);
 
 #endif /* __VIR_STORAGE_DRIVER_H__ */
-- 
2.0.4




More information about the libvir-list mailing list