Re: [Libvirt] [PATCH v2] Fix bug #611823 prohibit pools with duplicate storage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/02/2011 07:11 PM, Daniel P. Berrange wrote:
On Mon, Aug 01, 2011 at 02:12:51PM -0600, Eric Blake wrote:
On 07/31/2011 10:58 PM, Lei Li wrote:
Make sure the unique storage pool defined and create from different directory to avoid inconsistent version of volume pool created.
Wrap your commit messages; typically at 70 columns or so (since 'git
log' adds some indentation, but you want the end result to still fit
in 80 columns for legibility).

Signed-off-by: Lei Li<lilei@xxxxxxxxxxxxxxxxxx>
---
  src/conf/storage_conf.c      |   36 ++++++++++++++++++++++++++++++++++++
  src/conf/storage_conf.h      |    4 ++++
  src/libvirt_private.syms     |    2 ++
  src/storage/storage_driver.c |    6 ++++++
  4 files changed, 48 insertions(+), 0 deletions(-)

+virStoragePoolObjPtr
+virStoragePoolObjFindByPath(virStoragePoolObjListPtr pools,
+                            const char *path) {
+    unsigned int i;
+
+    for (i = 0 ; i<   pools->count ; i++) {
+        virStoragePoolObjLock(pools->objs[i]);
+        if (STREQ(pools->objs[i]->def->target.path, path))
+            return pools->objs[i];
+        virStoragePoolObjUnlock(pools->objs[i]);
+    }
+
+    return NULL;
+}
This one is good; in fact, we may even want to expose it as a public
API, parallel to other virStoragePoolLookupBy* functions (but not
until after 0.9.4 is released)
No, this API is flawed because def->target.path is not required to
be unique for all types of storage pool.

Daniel
Yes, in the beginning it seems like target->path is not required to be unique. But for this bug https://bugzilla.redhat.com/show_bug.cgi?id=611823
you reported, you said that "For example, if two directory pools point to the same directory, and one pool is used to create a volume,
 the other pool will remain unaware of the new volume until it is refreshed."  And I have test it when use 'virsh pool-define/create' it will create more
than two pools not two have the same directory. I think maybe you should look at the description of the bug first.
This API virStoragePoolObjFindByPath() just provide a method to search pool obj by path and can be use to avoid duplicate target path to fix this bug you mentioned.
BTW, I found that there are 3 method provide ways to search by 'key','name','path' in storage volume also.


--
Lei

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]