Use the backing store parser to properly create the information about a volume's backing store. Unfortunately as the storage driver isn't perpared to allow volumes backed by networked filesystems add a workaroud that will avoid changing the XML output. --- src/storage/storage_backend_fs.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c index 0d01dca..728e640 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -96,16 +96,27 @@ virStorageBackendProbeTarget(virStorageSourcePtr target, goto cleanup; if (meta->backingStoreRaw) { - if (VIR_ALLOC(target->backingStore) < 0) + if (!(target->backingStore = virStorageSourceNewFromBacking(meta))) goto cleanup; - target->backingStore->path = meta->backingStoreRaw; - meta->backingStoreRaw = NULL; target->backingStore->format = backingStoreFormat; + /* XXX: Remote storage doesn't play nicely with volumes backed by + * remote storage. To avoid trouble, just fake the ou */ + if (!virStorageSourceIsLocalStorage(target->backingStore)) { + virStorageSourceFree(target->backingStore); + + if (VIR_ALLOC(target->backingStore) < 0) + goto cleanup; + + target->backingStore->type = VIR_STORAGE_TYPE_FILE; + target->backingStore->path = meta->backingStoreRaw; + meta->backingStoreRaw = NULL; + target->backingStore->format = VIR_STORAGE_FILE_RAW; + } + if (target->backingStore->format == VIR_STORAGE_FILE_AUTO) { - if (!virStorageIsFile(target->backingStore->path) || - (rc = virStorageFileProbeFormat(target->backingStore->path, + if ((rc = virStorageFileProbeFormat(target->backingStore->path, -1, -1)) < 0) { /* If the backing file is currently unavailable or is * accessed via remote protocol only log an error, fake the -- 2.0.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list