VIR_DOMAIN_BLOCK_REBASE_RELATIVE works only when @base is specified.
Check it right in libvirt.c as it's not expected to change across
hypervisors.
---
src/libvirt.c | 7 +++++++
src/qemu/qemu_driver.c | 7 -------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c
index 6bf260a..edf2f8b 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -19817,6 +19817,13 @@ virDomainBlockRebase(virDomainPtr dom, const char *disk,
goto error;
}
+ if (flags & VIR_DOMAIN_BLOCK_REBASE_RELATIVE && !base) {
+ virReportInvalidArg(base, "%s",
+ _("flag VIR_DOMAIN_BLOCK_REBASE_RELATIVE is valid
"
+ "only with non-null base"));
+ goto error;
+ }
+
if (conn->driver->domainBlockRebase) {
int ret;
ret = conn->driver->domainBlockRebase(dom, disk, base, bandwidth,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index fd68324..b077950 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -15055,13 +15055,6 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
goto cleanup;
}
- if (flags & VIR_DOMAIN_BLOCK_REBASE_RELATIVE && !base) {
- virReportError(VIR_ERR_INVALID_ARG, "%s",
- _("flag VIR_DOMAIN_BLOCK_REBASE_RELATIVE is valid only
"
- "with non-null base"));
- goto cleanup;
- }
-
priv = vm->privateData;
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC)) {
async = true;
--
2.0.0