mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: monitor: Add argument for specifying backing name for block commit
To allow changing the name that is recorded in the overlay of the TOP image used in a block commit operation, we need to specify the backing name to qemu. This is done via the "backing-file" attribute to the block-commit command.
This commit is contained in:
parent
b20fb93cc4
commit
c29b652912
@ -15600,6 +15600,7 @@ qemuDomainBlockCommit(virDomainPtr dom,
|
||||
ret = qemuMonitorBlockCommit(priv->mon, device,
|
||||
top && !topIndex ? top : topSource->path,
|
||||
base && !baseIndex ? base : baseSource->path,
|
||||
NULL,
|
||||
bandwidth);
|
||||
qemuDomainObjExitMonitor(driver, vm);
|
||||
|
||||
|
@ -3231,13 +3231,14 @@ qemuMonitorTransaction(qemuMonitorPtr mon, virJSONValuePtr actions)
|
||||
int
|
||||
qemuMonitorBlockCommit(qemuMonitorPtr mon, const char *device,
|
||||
const char *top, const char *base,
|
||||
const char *backingName,
|
||||
unsigned long bandwidth)
|
||||
{
|
||||
int ret = -1;
|
||||
unsigned long long speed;
|
||||
|
||||
VIR_DEBUG("mon=%p, device=%s, top=%s, base=%s, bandwidth=%ld",
|
||||
mon, device, top, base, bandwidth);
|
||||
VIR_DEBUG("mon=%p, device=%s, top=%s, base=%s, backingName=%s, bandwidth=%lu",
|
||||
mon, device, top, base, NULLSTR(backingName), bandwidth);
|
||||
|
||||
/* Convert bandwidth MiB to bytes - unfortunately the JSON QMP protocol is
|
||||
* limited to LLONG_MAX also for unsigned values */
|
||||
@ -3251,7 +3252,8 @@ qemuMonitorBlockCommit(qemuMonitorPtr mon, const char *device,
|
||||
speed <<= 20;
|
||||
|
||||
if (mon->json)
|
||||
ret = qemuMonitorJSONBlockCommit(mon, device, top, base, speed);
|
||||
ret = qemuMonitorJSONBlockCommit(mon, device, top, base,
|
||||
backingName, speed);
|
||||
else
|
||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||
_("block-commit requires JSON monitor"));
|
||||
@ -3266,7 +3268,7 @@ qemuMonitorSupportsActiveCommit(qemuMonitorPtr mon)
|
||||
if (!mon->json)
|
||||
return false;
|
||||
|
||||
return qemuMonitorJSONBlockCommit(mon, "bogus", NULL, NULL, 0) == -2;
|
||||
return qemuMonitorJSONBlockCommit(mon, "bogus", NULL, NULL, NULL, 0) == -2;
|
||||
}
|
||||
|
||||
|
||||
|
@ -662,6 +662,7 @@ int qemuMonitorBlockCommit(qemuMonitorPtr mon,
|
||||
const char *device,
|
||||
const char *top,
|
||||
const char *base,
|
||||
const char *backingName,
|
||||
unsigned long bandwidth)
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
|
||||
ATTRIBUTE_NONNULL(4);
|
||||
|
@ -3465,6 +3465,7 @@ qemuMonitorJSONTransaction(qemuMonitorPtr mon, virJSONValuePtr actions)
|
||||
int
|
||||
qemuMonitorJSONBlockCommit(qemuMonitorPtr mon, const char *device,
|
||||
const char *top, const char *base,
|
||||
const char *backingName,
|
||||
unsigned long long speed)
|
||||
{
|
||||
int ret = -1;
|
||||
@ -3476,6 +3477,7 @@ qemuMonitorJSONBlockCommit(qemuMonitorPtr mon, const char *device,
|
||||
"U:speed", speed,
|
||||
"S:top", top,
|
||||
"S:base", base,
|
||||
"S:backing-file", backingName,
|
||||
NULL);
|
||||
if (!cmd)
|
||||
return -1;
|
||||
|
@ -261,6 +261,7 @@ int qemuMonitorJSONBlockCommit(qemuMonitorPtr mon,
|
||||
const char *device,
|
||||
const char *top,
|
||||
const char *base,
|
||||
const char *backingName,
|
||||
unsigned long long bandwidth)
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
||||
|
||||
|
@ -1164,7 +1164,7 @@ GEN_TEST_FUNC(qemuMonitorJSONAddDevice, "some_dummy_devicestr")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONSetDrivePassphrase, "vda", "secret_passhprase")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONDriveMirror, "vdb", "/foo/bar", NULL, 1024,
|
||||
VIR_DOMAIN_BLOCK_REBASE_SHALLOW | VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT)
|
||||
GEN_TEST_FUNC(qemuMonitorJSONBlockCommit, "vdb", "/foo/bar1", "/foo/bar2", 1024)
|
||||
GEN_TEST_FUNC(qemuMonitorJSONBlockCommit, "vdb", "/foo/bar1", "/foo/bar2", NULL, 1024)
|
||||
GEN_TEST_FUNC(qemuMonitorJSONDrivePivot, "vdb", NULL, NULL)
|
||||
GEN_TEST_FUNC(qemuMonitorJSONScreendump, "/foo/bar")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONOpenGraphics, "spice", "spicefd", false)
|
||||
|
Loading…
x
Reference in New Issue
Block a user