[libvirt] [PATCH 0/6] Various disk-related fixes/cleanups

noticed while doing blockdev work but didn't turn out to be relevant. Peter Krempa (6): conf: Make argument of virDomainDiskGetDriver const qemu: Move disk driver name validation into disk validation callback conf, qemu: Replace access to disk driver name with accessors conf: Punt 'driverName' back to disk definition structure conf: Disk 'shared' state is not guest ABI qemu: driver: Fix error message in qemuDomainBlockCommit src/conf/domain_conf.c | 20 ++++++++++---------- src/conf/domain_conf.h | 4 +++- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_hotplug.c | 7 ------- src/qemu/qemu_parse_command.c | 2 +- src/util/virstoragefile.c | 6 ------ src/util/virstoragefile.h | 1 - 9 files changed, 24 insertions(+), 39 deletions(-) -- 2.16.2

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 2 +- src/conf/domain_conf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4dad8e3b20..0dc1c3a276 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1852,7 +1852,7 @@ virDomainDiskEmptySource(virDomainDiskDefPtr def) const char * -virDomainDiskGetDriver(virDomainDiskDefPtr def) +virDomainDiskGetDriver(const virDomainDiskDef *def) { return def->src->driverName; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index bbaa24137d..3a3ec6f6c3 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2763,7 +2763,7 @@ const char *virDomainDiskGetSource(virDomainDiskDef const *def); int virDomainDiskSetSource(virDomainDiskDefPtr def, const char *src) ATTRIBUTE_RETURN_CHECK; void virDomainDiskEmptySource(virDomainDiskDefPtr def); -const char *virDomainDiskGetDriver(virDomainDiskDefPtr def); +const char *virDomainDiskGetDriver(const virDomainDiskDef *def); int virDomainDiskSetDriver(virDomainDiskDefPtr def, const char *name) ATTRIBUTE_RETURN_CHECK; int virDomainDiskGetFormat(virDomainDiskDefPtr def); -- 2.16.2

On Wed, Apr 18, 2018 at 12:55:38PM +0200, Peter Krempa wrote:
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 2 +- src/conf/domain_conf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

There were two places where we'd check this independently. Move it to the disk definition validation callback. This also fixes possible use of NULL in a printf for network storage. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_hotplug.c | 7 ------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a1a9e91e49..0f45a25038 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9708,18 +9708,6 @@ qemuBuildCommandLineValidate(virQEMUDriverPtr driver, return -1; } - for (i = 0; i < def->ndisks; i++) { - virDomainDiskDefPtr disk = def->disks[i]; - - if (disk->src->driverName != NULL && - STRNEQ(disk->src->driverName, "qemu")) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unsupported driver name '%s' for disk '%s'"), - disk->src->driverName, disk->src->path); - return -1; - } - } - return 0; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4c4a9a428d..a3431696af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4165,6 +4165,7 @@ static int qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, virQEMUCapsPtr qemuCaps) { + const char *driverName; virStorageSourcePtr n; if (disk->src->shared && !disk->src->readonly) { @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, } } + if ((driverName = virDomainDiskGetDriver(disk)) && + STRNEQ(driverName, "qemu")) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported driver name '%s' for disk '%s'"), + driverName, disk->dst); + return -1; + } + for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { if (qemuDomainValidateStorageSource(n, qemuCaps) < 0) return -1; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 8d3191f971..df9e8aa716 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -699,13 +699,6 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver, virDomainDiskDefPtr orig_disk = NULL; int ret = -1; - if (STRNEQ_NULLABLE(virDomainDiskGetDriver(disk), "qemu")) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unsupported driver name '%s' for disk '%s'"), - virDomainDiskGetDriver(disk), disk->dst); - goto cleanup; - } - if (virDomainDiskTranslateSourcePool(disk) < 0) goto cleanup; -- 2.16.2

On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote:
There were two places where we'd check this independently. Move it to the disk definition validation callback. This also fixes possible use of NULL in a printf for network storage.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_hotplug.c | 7 ------- 3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a1a9e91e49..0f45a25038 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9708,18 +9708,6 @@ qemuBuildCommandLineValidate(virQEMUDriverPtr driver, return -1; }
- for (i = 0; i < def->ndisks; i++) { - virDomainDiskDefPtr disk = def->disks[i]; - - if (disk->src->driverName != NULL && - STRNEQ(disk->src->driverName, "qemu")) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unsupported driver name '%s' for disk '%s'"), - disk->src->driverName, disk->src->path); - return -1; - } - } - return 0; }
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4c4a9a428d..a3431696af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4165,6 +4165,7 @@ static int qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, virQEMUCapsPtr qemuCaps) { + const char *driverName;
Consider initializing the variable here
virStorageSourcePtr n;
if (disk->src->shared && !disk->src->readonly) { @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, } }
+ if ((driverName = virDomainDiskGetDriver(disk)) && + STRNEQ(driverName, "qemu")) {
and/or using STRNEQ_NULLABLE here.
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported driver name '%s' for disk '%s'"), + driverName, disk->dst); + return -1; + } + for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { if (qemuDomainValidateStorageSource(n, qemuCaps) < 0) return -1;
Regardless Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote:
On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote:
There were two places where we'd check this independently. Move it to the disk definition validation callback. This also fixes possible use of NULL in a printf for network storage.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_hotplug.c | 7 ------- 3 files changed, 9 insertions(+), 19 deletions(-)
[...]
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4c4a9a428d..a3431696af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4165,6 +4165,7 @@ static int qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, virQEMUCapsPtr qemuCaps) { + const char *driverName;
Consider initializing the variable here
Okay, I can do that but it's kind of pointless since it's always overwritten.
virStorageSourcePtr n;
if (disk->src->shared && !disk->src->readonly) { @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, } }
+ if ((driverName = virDomainDiskGetDriver(disk)) && + STRNEQ(driverName, "qemu")) {
and/or using STRNEQ_NULLABLE here.
Umm why? It's guarded by checking of the assignment.

On Wed, Apr 18, 2018 at 02:54:24PM +0200, Peter Krempa wrote:
On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote:
On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote:
There were two places where we'd check this independently. Move it to the disk definition validation callback. This also fixes possible use of NULL in a printf for network storage.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_hotplug.c | 7 ------- 3 files changed, 9 insertions(+), 19 deletions(-)
[...]
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4c4a9a428d..a3431696af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4165,6 +4165,7 @@ static int qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, virQEMUCapsPtr qemuCaps) { + const char *driverName;
Consider initializing the variable here
Okay, I can do that but it's kind of pointless since it's always overwritten.
Initializing to virDomainDiskGetDriver(disk);
virStorageSourcePtr n;
if (disk->src->shared && !disk->src->readonly) { @@ -4183,6 +4184,14 @@ qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, } }
+ if ((driverName = virDomainDiskGetDriver(disk)) && + STRNEQ(driverName, "qemu")) {
and/or using STRNEQ_NULLABLE here.
Umm why? It's guarded by checking of the assignment.
Jano

On Wed, Apr 18, 2018 at 15:13:26 +0200, Ján Tomko wrote:
On Wed, Apr 18, 2018 at 02:54:24PM +0200, Peter Krempa wrote:
On Wed, Apr 18, 2018 at 13:30:24 +0200, Ján Tomko wrote:
On Wed, Apr 18, 2018 at 12:55:39PM +0200, Peter Krempa wrote:
There were two places where we'd check this independently. Move it to the disk definition validation callback. This also fixes possible use of NULL in a printf for network storage.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 12 ------------ src/qemu/qemu_domain.c | 9 +++++++++ src/qemu/qemu_hotplug.c | 7 ------- 3 files changed, 9 insertions(+), 19 deletions(-)
[...]
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4c4a9a428d..a3431696af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4165,6 +4165,7 @@ static int qemuDomainDeviceDefValidateDisk(const virDomainDiskDef *disk, virQEMUCapsPtr qemuCaps) { + const char *driverName;
Consider initializing the variable here
Okay, I can do that but it's kind of pointless since it's always overwritten.
Initializing to virDomainDiskGetDriver(disk);
aaah, right. STREQ_NULLABLE can't be used though, since apparently it's okay if it's left empty, at least according to other code

Replace direct usage of disk->src->driverName with the existing accessors. The parser code where we assign the driver form XML is intentionally not fixed to save an allocation. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 4 ++-- src/qemu/qemu_parse_command.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0dc1c3a276..987f65df23 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9395,7 +9395,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt, physical_block_size); goto error; } - } else if (!def->src->driverName && + } else if (!virDomainDiskGetDriver(def) && virXMLNodeNameEqual(cur, "driver")) { if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0) goto error; @@ -23100,7 +23100,7 @@ virDomainDiskDefFormat(virBufferPtr buf, virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); - virBufferEscapeString(&driverBuf, " name='%s'", def->src->driverName); + virBufferEscapeString(&driverBuf, " name='%s'", virDomainDiskGetDriver(def)); if (def->src->format > 0) virBufferAsprintf(&driverBuf, " type='%s'", virStorageFileFormatTypeToString(def->src->format)); diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 5f27d296b3..0ce963222f 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -783,7 +783,7 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr xmlopt, def->device = VIR_DOMAIN_DISK_DEVICE_FLOPPY; } } else if (STREQ(keywords[i], "format")) { - if (VIR_STRDUP(def->src->driverName, "qemu") < 0) + if (virDomainDiskSetDriver(def, "qemu") < 0) goto error; def->src->format = virStorageFileFormatTypeFromString(values[i]); } else if (STREQ(keywords[i], "cache")) { -- 2.16.2

You really make me question the usefulness of commit msg prefixes On Wed, Apr 18, 2018 at 12:55:40PM +0200, Peter Krempa wrote:
Replace direct usage of disk->src->driverName with the existing accessors. The parser code where we assign the driver form XML is
s/form/from/
intentionally not fixed to save an allocation.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 4 ++-- src/qemu/qemu_parse_command.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Currently it is not used in backing chains and does not seem that we will need to use it so return it back to the disk definition. Thankfully most accesses are done via the accessors. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 11 ++++++----- src/conf/domain_conf.h | 2 ++ src/util/virstoragefile.c | 6 ------ src/util/virstoragefile.h | 1 - 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 987f65df23..1ae742a110 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1790,6 +1790,7 @@ virDomainDiskDefFree(virDomainDiskDefPtr def) VIR_FREE(def->dst); virStorageSourceFree(def->mirror); VIR_FREE(def->wwn); + VIR_FREE(def->driverName); VIR_FREE(def->vendor); VIR_FREE(def->product); VIR_FREE(def->domain_name); @@ -1854,7 +1855,7 @@ virDomainDiskEmptySource(virDomainDiskDefPtr def) const char * virDomainDiskGetDriver(const virDomainDiskDef *def) { - return def->src->driverName; + return def->driverName; } @@ -1862,11 +1863,11 @@ int virDomainDiskSetDriver(virDomainDiskDefPtr def, const char *name) { int ret; - char *tmp = def->src->driverName; + char *tmp = def->driverName; - ret = VIR_STRDUP(def->src->driverName, name); + ret = VIR_STRDUP(def->driverName, name); if (ret < 0) - def->src->driverName = tmp; + def->driverName = tmp; else VIR_FREE(tmp); return ret; @@ -9132,7 +9133,7 @@ virDomainDiskDefDriverParseXML(virDomainDiskDefPtr def, char *tmp = NULL; int ret = -1; - def->src->driverName = virXMLPropString(cur, "name"); + def->driverName = virXMLPropString(cur, "name"); if ((tmp = virXMLPropString(cur, "cache")) && (def->cachemode = virDomainDiskCacheTypeFromString(tmp)) < 0) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 3a3ec6f6c3..7e20b8837b 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -644,6 +644,8 @@ struct _virDomainDiskDef { virDomainBlockIoTuneInfo blkdeviotune; + char *driverName; + char *serial; char *wwn; char *vendor; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 67b9ec71ac..531540ac91 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -2048,7 +2048,6 @@ virStorageSourceCopy(const virStorageSource *src, if (VIR_STRDUP(ret->path, src->path) < 0 || VIR_STRDUP(ret->volume, src->volume) < 0 || - VIR_STRDUP(ret->driverName, src->driverName) < 0 || VIR_STRDUP(ret->relPath, src->relPath) < 0 || VIR_STRDUP(ret->backingStoreRaw, src->backingStoreRaw) < 0 || VIR_STRDUP(ret->snapshot, src->snapshot) < 0 || @@ -2135,10 +2134,6 @@ virStorageSourceInitChainElement(virStorageSourcePtr newelem, virStorageSourceSeclabelsCopy(newelem, old) < 0) goto cleanup; - if (!newelem->driverName && - VIR_STRDUP(newelem->driverName, old->driverName) < 0) - goto cleanup; - newelem->shared = old->shared; newelem->readonly = old->readonly; @@ -2266,7 +2261,6 @@ virStorageSourceClear(virStorageSourcePtr def) VIR_FREE(def->snapshot); VIR_FREE(def->configFile); virStorageSourcePoolDefFree(def->srcpool); - VIR_FREE(def->driverName); virBitmapFree(def->features); VIR_FREE(def->compat); virStorageEncryptionFree(def->encryption); diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index 596746ccb7..d129e81978 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -246,7 +246,6 @@ struct _virStorageSource { virObjectPtr privateData; - char *driverName; int format; /* virStorageFileFormat in domain backing chains, but * pool-specific enum for storage volumes */ virBitmapPtr features; -- 2.16.2

s/Punt/put/ On Wed, Apr 18, 2018 at 12:55:41PM +0200, Peter Krempa wrote:
Currently it is not used in backing chains and does not seem that we will need to use it so return it back to the disk definition. Thankfully most accesses are done via the accessors.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 11 ++++++----- src/conf/domain_conf.h | 2 ++ src/util/virstoragefile.c | 6 ------ src/util/virstoragefile.h | 1 - 4 files changed, 8 insertions(+), 12 deletions(-)
Spellchecked-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

On Wed, Apr 18, 2018 at 13:31:34 +0200, Ján Tomko wrote:
s/Punt/put/
I actually meant 'punt' https://en.wiktionary.org/wiki/punt#Verb_2 But I can use your suggestion as well.
On Wed, Apr 18, 2018 at 12:55:41PM +0200, Peter Krempa wrote:
Currently it is not used in backing chains and does not seem that we will need to use it so return it back to the disk definition. Thankfully most accesses are done via the accessors.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 11 ++++++----- src/conf/domain_conf.h | 2 ++ src/util/virstoragefile.c | 6 ------ src/util/virstoragefile.h | 1 - 4 files changed, 8 insertions(+), 12 deletions(-)
Spellchecked-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
Jano

On Wed, Apr 18, 2018 at 01:49:43PM +0200, Peter Krempa wrote:
On Wed, Apr 18, 2018 at 13:31:34 +0200, Ján Tomko wrote:
s/Punt/put/
I actually meant 'punt'
https://en.wiktionary.org/wiki/punt#Verb_2
But I can use your suggestion as well.
Either way, do not use the Spellchecked-by tag. Spellcheck-privileges-revoked-by: Peter Krempa Jano
On Wed, Apr 18, 2018 at 12:55:41PM +0200, Peter Krempa wrote:
Currently it is not used in backing chains and does not seem that we will need to use it so return it back to the disk definition. Thankfully most accesses are done via the accessors.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 11 ++++++----- src/conf/domain_conf.h | 2 ++ src/util/virstoragefile.c | 6 ------ src/util/virstoragefile.h | 1 - 4 files changed, 8 insertions(+), 12 deletions(-)
Spellchecked-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
Jano

Drop the checking of 'shared' from the ABI stability check. This property controls whether the hypervisor allows multiple accesses to the same file, but this fact does not influence guest ABI. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1ae742a110..fdf8930f73 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -20819,8 +20819,7 @@ virDomainDiskDefCheckABIStability(virDomainDiskDefPtr src, } - if (src->src->readonly != dst->src->readonly || - src->src->shared != dst->src->shared) { + if (src->src->readonly != dst->src->readonly) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Target disk access mode does not match source")); return false; -- 2.16.2

On Wed, Apr 18, 2018 at 12:55:42PM +0200, Peter Krempa wrote:
Drop the checking of 'shared' from the ABI stability check. This property controls whether the hypervisor allows multiple accesses to the
s/multiple accesses/concurrent access/ maybe?
same file, but this fact does not influence guest ABI.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/domain_conf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

When qemu does not support changing of the backing store string, we'd reaport that block pull is not supported instead of block commit. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 4e06c9c745..5673d9fd8d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17705,7 +17705,7 @@ qemuDomainBlockCommit(virDomainPtr dom, topSource != disk->src) { if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CHANGE_BACKING_FILE)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support relative blockpull")); + _("this qemu doesn't support relative block commit")); goto endjob; } -- 2.16.2

On Wed, Apr 18, 2018 at 12:55:43PM +0200, Peter Krempa wrote:
When qemu does not support changing of the backing store string, we'd reaport that block pull is not supported instead of block commit.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa