提交 33da939b 编写于 作者: J Jesse Cook 提交者: Eric Blake

Allow relative path for qemu backing file

This patch enables the relative backing file path support provided by
qemu-img create.

If a relative path is specified for the backing file, it is converted
to an absolute path using the storage pool path. The absolute path is
used to verify that the backing file exists. If the backing file exists,
the relative path is allowed and will be provided to qemu-img create.
上级 0d166c6b
......@@ -164,6 +164,7 @@ Patches have also been contributed by:
Tiziano Mueller <dev-zero@gentoo.org>
Thibault VINCENT <thibault.vincent@smartjog.com>
Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Jesse Cook <code.crashenx@gmail.com>
[....send patches to get your name here....]
......
......@@ -692,6 +692,8 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
}
if (vol->backingStore.path) {
int accessRetCode = -1;
char *absolutePath = NULL;
/* XXX: Not strictly required: qemu-img has an option a different
* backing store, not really sure what use it serves though, and it
......@@ -712,7 +714,20 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
vol->backingStore.format);
return -1;
}
if (access(vol->backingStore.path, R_OK) != 0) {
/* Convert relative backing store paths to absolute paths for access
* validation.
*/
if ('/' != *(vol->backingStore.path) &&
virAsprintf(&absolutePath, "%s/%s", pool->def->target.path,
vol->backingStore.path) < 0) {
virReportOOMError();
return -1;
}
accessRetCode = access(absolutePath ? absolutePath
: vol->backingStore.path, R_OK);
VIR_FREE(absolutePath);
if (accessRetCode != 0) {
virReportSystemError(errno,
_("inaccessible backing store volume %s"),
vol->backingStore.path);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册