[Libvirt-cim] [PATCH] Auto refresh StoragePools

Sharad Mishra snmishra at us.ibm.com
Thu Mar 3 19:25:50 UTC 2011


# HG changeset patch
# User Sharad Mishra <snmishra at us.ibm.com>
# Date 1299089374 28800
# Node ID 1a894e2ab420ffb16d21d8ffa8c9850bea58b31c
# Parent  7a2ce3106321ac1729aeff2b9e42fb2e75da9295
Auto refresh StoragePools

This patch refreshes storage pool after volumes have been created or deleted from this pool. This patch also refreshes the pool before enumerating them.

Signed-off-by: Sharad Mishra <snmishra at us.ibm.com>

diff -r 7a2ce3106321 -r 1a894e2ab420 libxkutil/pool_parsing.c
--- a/libxkutil/pool_parsing.c	Mon Feb 28 05:57:22 2011 -0800
+++ b/libxkutil/pool_parsing.c	Wed Mar 02 10:09:34 2011 -0800
@@ -400,6 +400,9 @@
                         goto out;
                 }
 
+                if ((virStoragePoolRefresh(ptr, 0)) == -1)
+                        CU_DEBUG("Unable to refresh storage pool");
+
                 path = virStorageVolGetPath(vptr);
                 if (path == NULL) {
                         CU_DEBUG("Unable to get storage volume path");
@@ -420,9 +423,11 @@
                     int res_type)
 {
         int ret = 0;
+        virStorageVolPtr ptr;
+        virStoragePoolPtr pool_ptr;
 
         if (res_type == CIM_RES_TYPE_IMAGE) {
-                virStorageVolPtr ptr = virStorageVolLookupByPath(conn, rname);
+                ptr = virStorageVolLookupByPath(conn, rname);
                 if (ptr == NULL) {
                         CU_DEBUG("Storage volume %s is not defined", rname);
                         goto out;
@@ -432,6 +437,16 @@
                 if (ret != 0) {
                         CU_DEBUG("Unable to delete storage volume %s", rname);
                 } else {
+                        pool_ptr = virStoragePoolLookupByVolume(ptr);
+                        if (pool_ptr == NULL) {
+                                CU_DEBUG("Unable to get storage pool "
+                                         "from volume");
+                        } else {
+                                ret = virStoragePoolRefresh(pool_ptr, 0);
+                                if (ret != 0) 
+                                        CU_DEBUG("Unable to refresh storage "
+                                                 "pool");
+                        }
                         ret = 1;
                 }
 
diff -r 7a2ce3106321 -r 1a894e2ab420 src/Virt_DevicePool.c
--- a/src/Virt_DevicePool.c	Mon Feb 28 05:57:22 2011 -0800
+++ b/src/Virt_DevicePool.c	Wed Mar 02 10:09:34 2011 -0800
@@ -182,6 +182,10 @@
                 goto out;
         }
 
+        if ((virStoragePoolRefresh(pool, 0)) == -1)
+                CU_DEBUG("Unable to refresh storage pool");
+
+
         if (virStoragePoolGetInfo(pool, &info) == -1) {
                 CU_DEBUG("Failed to get info for pool `%s'", _pool->tag);
                 goto out;




More information about the Libvirt-cim mailing list