On Fri, Oct 31, 2008 at 12:04:34PM +0100, Chris Lalancette wrote:
Index: src/storage_driver.c
===================================================================
RCS file: /data/cvs/libvirt/src/storage_driver.c,v
retrieving revision 1.13
diff -u -r1.13 storage_driver.c
--- a/src/storage_driver.c 21 Oct 2008 17:15:53 -0000 1.13
+++ b/src/storage_driver.c 31 Oct 2008 10:09:29 -0000
@@ -963,11 +963,25 @@
virStorageDriverStatePtr driver =
(virStorageDriverStatePtr)conn->storagePrivateData;
unsigned int i;
+ char *stable_path;
for (i = 0 ; i < driver->pools.count ; i++) {
if (virStoragePoolObjIsActive(driver->pools.objs[i])) {
- virStorageVolDefPtr vol =
- virStorageVolDefFindByPath(driver->pools.objs[i], path);
+ virStorageVolDefPtr vol;
+ virStorageBackendPoolOptionsPtr options;
+
+ options =
virStorageBackendPoolOptionsForType(driver->pools.objs[i]->def->type);
+ if (options == NULL)
+ continue;
+
+ if (options->flags & VIR_STORAGE_BACKEND_POOL_STABLE_PATH)
+ stable_path = virStorageBackendStablePath(conn,
driver->pools.objs[i], (char *)path);
+ else
+ stable_path = (char *)path;
+
+ vol = virStorageVolDefFindByPath(driver->pools.objs[i], stable_path);
+ if (stable_path != path)
+ VIR_FREE(stable_path);
This VIR_FREE check is slightly evil, how about something more like
if (options->flags & VIR_STORAGE_BACKEND_POOL_STABLE_PATH) {
char *stablepath = virStorageBackendStablePath(conn,
driver->pools.objs[i], path);
vol = virStorageVolDefFindByPath(driver->pools.objs[i],
stable_path);
VIR_FREE(stablepath);
} else {
vol = virStorageVolDefFindByPath(driver->pools.objs[i], path);
}
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|