On Thu, Apr 19, 2012 at 02:33:27PM +0200, Wido den Hollander wrote: > The current storage pools for NFS and iSCSI only require one host to > connect to. Future storage pools like RBD and Sheepdog will require > multiple hosts. > > This patch allows multiple source hosts and rewrites the current > storage drivers. > > Signed-off-by: Wido den Hollander <wido@xxxxxxxxx> > --- > src/conf/storage_conf.c | 59 ++++++++++++++++++++++++---------- > src/conf/storage_conf.h | 5 ++- > src/esx/esx_storage_driver.c | 6 +++- > src/storage/storage_backend_fs.c | 12 +++--- > src/storage/storage_backend_iscsi.c | 12 +++--- > src/test/test_driver.c | 4 +- > 6 files changed, 63 insertions(+), 35 deletions(-) > > @@ -1677,7 +1700,7 @@ int virStoragePoolSourceFindDuplicate(virStoragePoolObjListPtr pools, > break; > case VIR_STORAGE_POOL_NETFS: > if ((STREQ(pool->def->source.dir, def->source.dir)) \ > - && (STREQ(pool->def->source.host.name, def->source.host.name))) > + && (STREQ(pool->def->source.hosts[0].name, def->source.hosts[0].name))) > matchpool = pool; > break; > case VIR_STORAGE_POOL_SCSI: Here we need to add to the conditional check "nhosts == 1" before dereferencing hosts[0]. > @@ -1688,7 +1711,7 @@ int virStoragePoolSourceFindDuplicate(virStoragePoolObjListPtr pools, > { > matchpool = virStoragePoolSourceFindDuplicateDevices(pool, def); > if (matchpool) { > - if (STREQ(matchpool->def->source.host.name, def->source.host.name)) { > + if (STREQ(matchpool->def->source.hosts[0].name, def->source.hosts[0].name)) { > if ((matchpool->def->source.initiator.iqn) && (def->source.initiator.iqn)) { > if (STREQ(matchpool->def->source.initiator.iqn, def->source.initiator.iqn)) > break; Same here. > diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c > index 1af12e6..79eefd3 100644 > --- a/src/storage/storage_backend_fs.c > +++ b/src/storage/storage_backend_fs.c > @@ -206,7 +206,7 @@ virStorageBackendFileSystemNetFindPoolSourcesFunc(virStoragePoolObjPtr pool ATTR > if (!(src = virStoragePoolSourceListNewSource(&state->list))) > goto cleanup; At the start of this function we need to have if (src->nhosts != 1) { virStorageReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s" "Expected exactly 1 host for the filesystem pool")); goto cleanup; } And similarly at the start of other functions which are referencing src->hosts[0] Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list