From: Michal Privoznik Date: Mon, 21 Jun 2021 09:56:07 +0000 (+0200) Subject: Introduce property to virtio-mem X-Git-Tag: v7.9.0-rc1~294 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59e9fb98f5fd8b28b3b8801ce158fcbfe44a4ffd;p=thirdparty%2Flibvirt.git Introduce property to virtio-mem The virtio-mem has another property that isn't exposed yet: current size exposed to the guest. Please note, that this is different to because esp. on sizing the memory down guest may refuse to release some blocks. Therefore, let's have another size to report in the XML. But because of its nature, the won't be parsed and is report only (for live XMLs). Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 06d16b2c23..526727f98e 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -7802,6 +7802,7 @@ Example: usage of the memory devices 0 2048 1048576 + 524288 @@ -7917,6 +7918,12 @@ Example: usage of the memory devices The total size exposed to the guest. Must respect ``block`` granularity and be smaller than or equal to ``size``. + ``current`` + Active XML for ``virtio-mem`` model may contain ``current`` element that + reflects the current size of the corresponding virtio memory device. The + element is formatted into live XML and never parsed, i.e. it is + output-only element. + :anchor:`` IOMMU devices diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 9e7d74d43e..ec5bd91740 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -6698,6 +6698,11 @@ + + + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 96d85a7610..4a46f30610 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -25921,7 +25921,8 @@ virDomainMemorySourceDefFormat(virBuffer *buf, static void virDomainMemoryTargetDefFormat(virBuffer *buf, - virDomainMemoryDef *def) + virDomainMemoryDef *def, + unsigned int flags) { g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); @@ -25943,6 +25944,10 @@ virDomainMemoryTargetDefFormat(virBuffer *buf, virBufferAsprintf(&childBuf, "%llu\n", def->requestedsize); + if (!(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)) { + virBufferAsprintf(&childBuf, "%llu\n", + def->currentsize); + } } virXMLFormatElement(buf, "target", NULL, &childBuf); @@ -25975,7 +25980,7 @@ virDomainMemoryDefFormat(virBuffer *buf, if (virDomainMemorySourceDefFormat(buf, def) < 0) return -1; - virDomainMemoryTargetDefFormat(buf, def); + virDomainMemoryTargetDefFormat(buf, def, flags); virDomainDeviceInfoFormat(buf, &def->info, flags); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 9db15a87fb..b7f9e66487 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2496,6 +2496,9 @@ struct _virDomainMemoryDef { unsigned long long labelsize; /* kibibytes; valid only for NVDIMM */ unsigned long long blocksize; /* kibibytes; valid only for VIRTIO_MEM */ unsigned long long requestedsize; /* kibibytes; valid only for VIRTIO_MEM */ + unsigned long long currentsize; /* kibibytes, valid for VIRTIO_MEM and + active domain only, only to report never + parse */ bool readonly; /* valid only for NVDIMM */ /* required for QEMU NVDIMM ppc64 support */