On Thu, Mar 03, 2011 at 09:06:25PM -0600, Jesse Cook wrote: > This patch enables the relative backing file path support provided by > qemu-img create. > > If the storage pool is not found with the specified path, check if the > file exists relative to the pool where the new image will be created by > prepending the storage pool path. > --- > src/storage/storage_backend.c | 32 ++++++++++++++++++++++++++++---- > 1 files changed, 28 insertions(+), 4 deletions(-) > > diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c > index 2eede74..bb49f22 100644 > --- a/src/storage/storage_backend.c > +++ b/src/storage/storage_backend.c > @@ -687,10 +687,34 @@ virStorageBackendCreateQemuImg(virConnectPtr conn, > return -1; > } > if (access(vol->backingStore.path, R_OK) != 0) { > - virReportSystemError(errno, > - _("inaccessible backing store volume %s"), > - vol->backingStore.path); > - return -1; > + /* If the backing store image is not found with the specified path, > + * check for the file relative to the pool path. */ > + int accessRetCode = -1; > + > + char *absolutePath = NULL; > + > + virBuffer absPathBuf = VIR_BUFFER_INITIALIZER; > + > + virBufferVSprintf(&absPathBuf, > + "%s/%s", > + pool->def->target.path, > + vol->backingStore.path); > + > + if (virBufferError(&absPathBuf)) { > + virBufferFreeAndReset(&absPathBuf); > + virReportOOMError(); > + return -1; > + } > + > + absolutePath = virBufferContentAndReset(&absPathBuf); Since you're only doing one single virBufferVSprintf() call, using virBuffer is overkill. You can get away with the simpler virAsprintf(&absolutePath, "%s/%s", pool->def->target.path, vol->backingStore.path); > + accessRetCode = access(absolutePath, R_OK); > + VIR_FREE(absolutePath); > + if (accessRetCode != 0) { > + virReportSystemError(errno, > + _("inaccessible backing store volume %s"), > + vol->backingStore.path); > + return -1; > + } > } > } Regards, 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