[libvirt PATCH v2 0/4] Make SEV 'cbitpos' and 'reducedPhysBits' attributes optional
by Erik Skultety
We designed them as mandatory, but these are platform dependent and can be
filled from QEMU capabilities.
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/57
Since v1:
- moved the capability check from qemuProcessPrepareSEVGuestInput to
qemuValidateDomainDef as requested
Erik Skultety (4):
qemu_process: sev: Drop an unused variable
qemu: process: Move SEV capability check to qemuValidateDomainDef
qemu: process: sev: Fill missing 'cbitpos' & 'reducedPhysBits' from
caps
conf: domain: sev: Make 'cbitpos' & 'reducedPhysBits' attrs optional
docs/schemas/domaincommon.rng | 16 ++++---
src/conf/domain_conf.c | 46 ++++++++++++-------
src/conf/domain_conf.h | 2 +
src/qemu/qemu_process.c | 45 +++++++++++++-----
src/qemu/qemu_validate.c | 8 ++++
...v-missing-platform-info.x86_64-2.12.0.args | 37 +++++++++++++++
...nch-security-sev-missing-platform-info.xml | 35 ++++++++++++++
tests/qemuxml2argvtest.c | 1 +
8 files changed, 157 insertions(+), 33 deletions(-)
create mode 100644 tests/qemuxml2argvdata/launch-security-sev-missing-platfo=
rm-info.x86_64-2.12.0.args
create mode 100644 tests/qemuxml2argvdata/launch-security-sev-missing-platfo=
rm-info.xml
--=20
2.26.2
4 years, 2 months
[RFC PATCH v2] fix error message in virMigrate3 if connection is broken
by Nikolay Shirokovskiy
Changes from v1 [1]:
- return error value from VIR_DRV_SUPPORTS_FEATURE instead
of setting error to out argument (decrease over enginering
level on patch generator in other words :)
Currently virDomainMigrate3 reports "this function is not supported by the
connection driver: virDomainMigrate3" if connection to destination for example
is broken. This is a bit misleading.
This is a result of we treat errors as unsupported feature in
VIR_DRV_SUPPORTS_FEATURE macro. Let's return error from macro as is.
I guess all the other occurences of VIR_DRV_SUPPORTS_FEATURE need to be updated
as well so that we detect errors early and not have issues similar to
virDomainMigrate3. I'm going to fix the other places if this RFC is approved.
[1] https://www.redhat.com/archives/libvir-list/2020-September/msg01056.html
---
src/driver.h | 14 ++++++++
src/libvirt-domain.c | 91 +++++++++++++++++++++++++++++++++++++---------------
2 files changed, 79 insertions(+), 26 deletions(-)
diff --git a/src/driver.h b/src/driver.h
index 6278aa0..c29b2fa 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -60,6 +60,20 @@ typedef enum {
(drv)->connectSupportsFeature((conn), (feature)) > 0 : 0)
+/*
+ * A little wrapper for connectSupportsFeature API to test that the API
+ * itself is available first. Return values are same as for API.
+ *
+ * Returns:
+ * -1 on error
+ * 0 feature is not supported
+ * 1 feature is supported
+ */
+#define VIR_DRV_SUPPORTS_FEATURE2(drv, conn, feature) \
+ ((drv)->connectSupportsFeature ? \
+ (drv)->connectSupportsFeature((conn), (feature)) : 0)
+
+
#define __VIR_DRIVER_H_INCLUDES___
#include "driver-hypervisor.h"
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index cde86c7..03c357f 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -3846,6 +3846,9 @@ virDomainMigrate3(virDomainPtr domain,
const char *dname = NULL;
const char *dxml = NULL;
unsigned long long bandwidth = 0;
+ int rc_src;
+ int rc_dst;
+ int rc;
VIR_DOMAIN_DEBUG(domain, "dconn=%p, params=%p, nparms=%u flags=0x%x",
dconn, params, nparams, flags);
@@ -3878,15 +3881,21 @@ virDomainMigrate3(virDomainPtr domain,
}
if (flags & VIR_MIGRATE_OFFLINE) {
- if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATION_OFFLINE)) {
+ rc = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATION_OFFLINE);
+ if (rc < 0) {
+ goto error;
+ } else if (rc == 0) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
_("offline migration is not supported by "
"the source host"));
goto error;
}
- if (!VIR_DRV_SUPPORTS_FEATURE(dconn->driver, dconn,
- VIR_DRV_FEATURE_MIGRATION_OFFLINE)) {
+ rc = VIR_DRV_SUPPORTS_FEATURE2(dconn->driver, dconn,
+ VIR_DRV_FEATURE_MIGRATION_OFFLINE);
+ if (rc < 0) {
+ goto error;
+ } else if (rc == 0) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
_("offline migration is not supported by "
"the destination host"));
@@ -3899,21 +3908,30 @@ virDomainMigrate3(virDomainPtr domain,
* the flag for just the source side. We mask it out to allow
* migration from newer source to an older destination that
* rejects the flag. */
- if (flags & VIR_MIGRATE_CHANGE_PROTECTION &&
- !VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION)) {
- virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
- _("cannot enforce change protection"));
- goto error;
+ if (flags & VIR_MIGRATE_CHANGE_PROTECTION) {
+ rc = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION);
+ if (rc < 0) {
+ goto error;
+ } else if (rc == 0) {
+ virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
+ _("cannot enforce change protection"));
+ goto error;
+ }
}
flags &= ~VIR_MIGRATE_CHANGE_PROTECTION;
/* Prefer extensible API but fall back to older migration APIs if params
* only contains parameters which were supported by the older API. */
- if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATION_PARAMS) &&
- VIR_DRV_SUPPORTS_FEATURE(dconn->driver, dconn,
- VIR_DRV_FEATURE_MIGRATION_PARAMS)) {
+ rc_src = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATION_PARAMS);
+ if (rc_src < 0)
+ goto error;
+ rc_dst = VIR_DRV_SUPPORTS_FEATURE2(dconn->driver, dconn,
+ VIR_DRV_FEATURE_MIGRATION_PARAMS);
+ if (rc_dst < 0)
+ goto error;
+ if (rc_src && rc_dst) {
VIR_DEBUG("Using migration protocol 3 with extensible parameters");
ddomain = virDomainMigrateVersion3Params(domain, dconn, params,
nparams, flags);
@@ -3939,17 +3957,30 @@ virDomainMigrate3(virDomainPtr domain,
goto error;
}
- if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATION_V3) &&
- VIR_DRV_SUPPORTS_FEATURE(dconn->driver, dconn,
- VIR_DRV_FEATURE_MIGRATION_V3)) {
+ rc_src = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATION_V3);
+ if (rc_src < 0)
+ goto error;
+ rc_dst = VIR_DRV_SUPPORTS_FEATURE2(dconn->driver, dconn,
+ VIR_DRV_FEATURE_MIGRATION_V3);
+ if (rc_dst < 0)
+ goto error;
+ if (rc_src && rc_dst) {
VIR_DEBUG("Using migration protocol 3");
ddomain = virDomainMigrateVersion3(domain, dconn, dxml, flags,
dname, uri, bandwidth);
- } else if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATION_V2) &&
- VIR_DRV_SUPPORTS_FEATURE(dconn->driver, dconn,
- VIR_DRV_FEATURE_MIGRATION_V2)) {
+ goto done;
+ }
+
+ rc_src = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATION_V2);
+ if (rc_src < 0)
+ goto error;
+ rc_dst = VIR_DRV_SUPPORTS_FEATURE2(dconn->driver, dconn,
+ VIR_DRV_FEATURE_MIGRATION_V2);
+ if (rc_dst < 0)
+ goto error;
+ if (rc_src && rc_dst) {
VIR_DEBUG("Using migration protocol 2");
if (dxml) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
@@ -3959,10 +3990,18 @@ virDomainMigrate3(virDomainPtr domain,
}
ddomain = virDomainMigrateVersion2(domain, dconn, flags,
dname, uri, bandwidth);
- } else if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
- VIR_DRV_FEATURE_MIGRATION_V1) &&
- VIR_DRV_SUPPORTS_FEATURE(dconn->driver, dconn,
- VIR_DRV_FEATURE_MIGRATION_V1)) {
+ goto done;
+ }
+
+ rc_src = VIR_DRV_SUPPORTS_FEATURE2(domain->conn->driver, domain->conn,
+ VIR_DRV_FEATURE_MIGRATION_V1);
+ if (rc_src < 0)
+ goto error;
+ rc_dst = VIR_DRV_SUPPORTS_FEATURE2(dconn->driver, dconn,
+ VIR_DRV_FEATURE_MIGRATION_V1);
+ if (rc_dst < 0)
+ goto error;
+ if (rc_src && rc_dst) {
VIR_DEBUG("Using migration protocol 1");
if (dxml) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
--
1.8.3.1
4 years, 2 months
[libvirt PATCH 0/3] Add script to sync from QEMU i386 cpu models
by Tim Wiederhake
This hopefully makes synchronization with QEMU faster and less
error prone.
Patch #3 showcases the changes to the cpu models the script
suggests for qemu 8d90bfc5c31ad60f6049dd39be636b06bc00b652.
Tim Wiederhake (3):
cpu_map: Unify apostrophe and quotation mark usage
cpu_map: Add script to sync from QEMU i386 cpu models
[DONTMERGE] Sample output of new sync script
src/cpu_map/arm_Falkor.xml | 6 +-
src/cpu_map/arm_Kunpeng-920.xml | 6 +-
src/cpu_map/arm_ThunderX299xx.xml | 6 +-
src/cpu_map/arm_cortex-a53.xml | 6 +-
src/cpu_map/arm_cortex-a57.xml | 6 +-
src/cpu_map/arm_cortex-a72.xml | 6 +-
src/cpu_map/arm_features.xml | 34 +-
src/cpu_map/index.xml | 12 +-
src/cpu_map/ppc64_POWER6.xml | 6 +-
src/cpu_map/ppc64_POWER7.xml | 8 +-
src/cpu_map/ppc64_POWER8.xml | 10 +-
src/cpu_map/ppc64_POWER9.xml | 6 +-
src/cpu_map/ppc64_POWERPC_e5500.xml | 6 +-
src/cpu_map/ppc64_POWERPC_e6500.xml | 6 +-
src/cpu_map/ppc64_vendors.xml | 4 +-
src/cpu_map/sync_qemu_i386.py | 361 +++++++++
src/cpu_map/x86_486.xml | 18 +-
src/cpu_map/x86_Broadwell-IBRS.xml | 135 ++--
src/cpu_map/x86_Broadwell-noTSX-IBRS.xml | 131 ++--
src/cpu_map/x86_Broadwell-noTSX.xml | 129 ++--
src/cpu_map/x86_Broadwell.xml | 132 ++--
src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 166 ++--
src/cpu_map/x86_Cascadelake-Server.xml | 169 ++--
src/cpu_map/x86_Conroe.xml | 70 +-
src/cpu_map/x86_Cooperlake.xml | 14 +-
src/cpu_map/x86_Denverton.xml | 74 ++
src/cpu_map/x86_Dhyana.xml | 144 ++--
src/cpu_map/x86_EPYC-IBPB.xml | 157 ++--
src/cpu_map/x86_EPYC-Rome.xml | 169 ++--
src/cpu_map/x86_EPYC.xml | 150 ++--
src/cpu_map/x86_Haswell-IBRS.xml | 128 ++--
src/cpu_map/x86_Haswell-noTSX-IBRS.xml | 124 +--
src/cpu_map/x86_Haswell-noTSX.xml | 122 +--
src/cpu_map/x86_Haswell.xml | 124 +--
src/cpu_map/x86_Icelake-Client-noTSX.xml | 164 ++--
src/cpu_map/x86_Icelake-Client.xml | 167 ++--
src/cpu_map/x86_Icelake-Server-noTSX.xml | 197 ++---
src/cpu_map/x86_Icelake-Server.xml | 185 ++---
src/cpu_map/x86_IvyBridge-IBRS.xml | 109 +--
src/cpu_map/x86_IvyBridge.xml | 106 +--
src/cpu_map/x86_KnightsMill.xml | 77 ++
src/cpu_map/x86_Nehalem-IBRS.xml | 84 +-
src/cpu_map/x86_Nehalem.xml | 81 +-
src/cpu_map/x86_Opteron_G1.xml | 65 +-
src/cpu_map/x86_Opteron_G2.xml | 72 +-
src/cpu_map/x86_Opteron_G3.xml | 82 +-
src/cpu_map/x86_Opteron_G4.xml | 105 +--
src/cpu_map/x86_Opteron_G5.xml | 111 +--
src/cpu_map/x86_Penryn.xml | 74 +-
src/cpu_map/x86_SandyBridge-IBRS.xml | 98 +--
src/cpu_map/x86_SandyBridge.xml | 95 +--
src/cpu_map/x86_Skylake-Client-IBRS.xml | 148 ++--
src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 144 ++--
src/cpu_map/x86_Skylake-Client.xml | 145 ++--
src/cpu_map/x86_Skylake-Server-IBRS.xml | 158 ++--
src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 155 ++--
src/cpu_map/x86_Skylake-Server.xml | 156 ++--
src/cpu_map/x86_Snowridge.xml | 79 ++
src/cpu_map/x86_Westmere-IBRS.xml | 85 +-
src/cpu_map/x86_Westmere.xml | 84 +-
src/cpu_map/x86_athlon.xml | 60 +-
src/cpu_map/x86_core2duo.xml | 72 +-
src/cpu_map/x86_coreduo.xml | 62 +-
src/cpu_map/x86_cpu64-rhel5.xml | 54 +-
src/cpu_map/x86_cpu64-rhel6.xml | 58 +-
src/cpu_map/x86_features.xml | 724 +++++++++---------
src/cpu_map/x86_kvm32.xml | 57 +-
src/cpu_map/x86_kvm64.xml | 65 +-
src/cpu_map/x86_n270.xml | 66 +-
src/cpu_map/x86_pentium.xml | 31 +-
src/cpu_map/x86_pentium2.xml | 49 +-
src/cpu_map/x86_pentium3.xml | 51 +-
src/cpu_map/x86_pentiumpro.xml | 38 +-
src/cpu_map/x86_phenom.xml | 83 +-
src/cpu_map/x86_qemu32.xml | 48 +-
src/cpu_map/x86_qemu64.xml | 75 +-
src/cpu_map/x86_vendors.xml | 6 +-
77 files changed, 4160 insertions(+), 3110 deletions(-)
create mode 100755 src/cpu_map/sync_qemu_i386.py
create mode 100644 src/cpu_map/x86_Denverton.xml
create mode 100644 src/cpu_map/x86_KnightsMill.xml
create mode 100644 src/cpu_map/x86_Snowridge.xml
--
2.26.2
4 years, 2 months
[PATCH v2] docs: Document camelCase preference for XML elements and attributes
by Michal Privoznik
Recently I've merged a patch that used hyphens in an attribute
name. I fixed it later, but turned out we don't document our
preference which is camelCase.
Suggested-by: Erik Skultety <eskultet(a)redhat.com>
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
diff to v1:
- Extended coding style too.
docs/api_extension.html.in | 6 ++++++
docs/coding-style.rst | 15 +++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/docs/api_extension.html.in b/docs/api_extension.html.in
index 6c64e83314..d7696056ac 100644
--- a/docs/api_extension.html.in
+++ b/docs/api_extension.html.in
@@ -110,6 +110,12 @@
src/libvirt_public.syms
</code></p>
+ <p>
+ Please note that single word names for attributes and elements is
+ preferred. But if you have to use two ore more words please join them in
+ camelCase style.
+ </p>
+
<p>
This task is in many ways the most important to get right, since once
the API has been committed to the repository, it's libvirt's policy
diff --git a/docs/coding-style.rst b/docs/coding-style.rst
index 44e5265a60..cfd7b16638 100644
--- a/docs/coding-style.rst
+++ b/docs/coding-style.rst
@@ -960,3 +960,18 @@ git):
cleanup:
/* ... do other stuff ... */
}
+
+
+XML element and attribute naming
+--------------------------------
+
+New elements and/or attributes should be short and descriptive.
+In general, they should reflect what the feature does instead of
+how exactly it is named in given hypervisor because this creates
+an abstraction that other drivers can benefit from (for instance
+if the same feature is named differently in two hypervisors).
+That is not to say an element or attribute can't have the same
+name as in a hypervisor, but proceed with caution.
+
+Single worded names are preferred, but if more words must be
+used then they shall be joined in camelCase style.
--
2.26.2
4 years, 2 months
[PATCH v1 00/24] move more validations to qemu_validate.c
by Daniel Henrique Barboza
Hi,
This is another step following up the work done in [1].
Recapping, the idea is to move any validation that can
be done in parse/define time to qemu_validate.c instead
of let it sit inside a command line build function in
qemu_command.c. I'll again copy/paste the reasoning Cole
Robinson gave for this work back then (see [2] for more
info):
-------
The benefits of moving to validate time is that XML is rejected by
'virsh define' rather than at 'virsh start' time. It also makes it easier
to follow the cli building code, and makes it easier to verify qemu_command.c
test suite code coverage for the important stuff like covering every CLI
option. It's also a good intermediate step for sharing validation with
domain capabilities building, like is done presently for rng models.
-------
Not all validations were moved with these series, but I covered most
of them.
One thing worth noticing is the existence of 'post start' validations,
most of them related to PCI addressing, and other notable cases such as
NUMA nodes and CPU models, that can't be moved to parse time. The reason
is that the QEMU driver will change them during start time.
I contemplated move them to the existing qemuBuildCommandLineValidate(),
but that would remove them from the hotplug path that uses the
qemuBuild*DevStr() functions. I don't have an easy answer on how to handle
these 'post start' validations ATM, so for now they remain in
qemu_command.c.
[1] https://www.redhat.com/archives/libvir-list/2019-December/msg00570.html
[2] https://www.redhat.com/archives/libvir-list/2019-October/msg00568.html
src/qemu/qemu_command.c | 379 +--------
src/qemu/qemu_command.h | 4 +-
src/qemu/qemu_hotplug.c | 4 +-
src/qemu/qemu_validate.c | 740 ++++++++++++++----
tests/qemuhotplugtest.c | 1 +
.../disk-sata-incompatible-address.err | 2 +-
.../net-virtio-rxqueuesize-invalid-size.err | 2 +-
.../pseries-panic-address.err | 2 +-
tests/qemuxml2argvtest.c | 28 +-
tests/qemuxml2xmltest.c | 62 +-
10 files changed, 706 insertions(+), 518 deletions(-)
--
2.26.2
4 years, 2 months
[libvirt PATCH] qemu: agent: fix array access
by Ján Tomko
My code movement changed the type of ifaces_ret from
virDomainInterfacePtr * to virDomainInterfacePtr **,
but failed to adjust the condition or dereference the
array correctly.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
Fixes: 6ddb1f803ea38d8d709b984fa9539e34318a9dc0
---
src/qemu/qemu_agent.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index c9c4b034d3..4c61c5cdc6 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -2209,6 +2209,7 @@ qemuAgentGetAllInterfaceAddresses(virDomainInterfacePtr **ifaces_ret,
size_t ifaces_count = 0;
size_t i;
+ *ifaces_ret = NULL;
/* Hash table to handle the interface alias */
ifaces_store = virHashNew(NULL);
@@ -2223,9 +2224,9 @@ qemuAgentGetAllInterfaceAddresses(virDomainInterfacePtr **ifaces_ret,
return ifaces_count;
error:
- if (ifaces_ret) {
+ if (*ifaces_ret) {
for (i = 0; i < ifaces_count; i++)
- virDomainInterfaceFree(*ifaces_ret[i]);
+ virDomainInterfaceFree((*ifaces_ret)[i]);
}
VIR_FREE(*ifaces_ret);
return -1;
--
2.26.2
4 years, 2 months
[PATCH v1 1/8] migration/dirtyrate: Introduce virDomainDirtyRateInfo structure
by Hao Wang
Introduce virDomainDirtyRateInfo structure used for domain's memory dirty rate query.
Signed-off-by: Hao Wang <wanghao232(a)huawei.com>
Reviewed-by: Chuan Zheng <zhengchuan(a)huawei.com>
---
include/libvirt/libvirt-domain.h | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 8b9d9c1..2d3847b 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -4999,4 +4999,28 @@ int virDomainBackupBegin(virDomainPtr domain,
char *virDomainBackupGetXMLDesc(virDomainPtr domain,
unsigned int flags);
+/**
+ * virDomainDirtyRateInfo:
+ *
+ * a virDomainDirtyRateInfo is a structure filled by virDomainGetDirtyRate() and
+ * extracting dirty rate infomation for a given active Domain.
+ */
+
+typedef struct _virDomainDirtyRateInfo virDomainDirtyRateInfo;
+
+struct _virDomainDirtyRateInfo {
+ int status; /* the status of dirtyrate calculation */
+ long long dirtyRate; /* the dirtyrate in MB/s */
+ long long startTime; /* the start time of dirtyrate calculation */
+ long long calcTime; /* the period of dirtyrate calculation */
+};
+
+/**
+ * virDomainDirtyRateInfoPtr:
+ *
+ * a virDomainDirtyRateInfoPtr is a pointer to a virDomainDirtyRateInfo structure.
+ */
+
+typedef virDomainDirtyRateInfo *virDomainDirtyRateInfoPtr;
+
#endif /* LIBVIRT_DOMAIN_H */
--
2.23.0
4 years, 2 months
[PATCH v3 0/2] block: deprecate the sheepdog driver
by Daniel P. Berrangé
2 years back I proposed dropping the sheepdog mailing list from the
MAINTAINERS file, but somehow the patch never got picked up:
https://lists.gnu.org/archive/html/qemu-block/2018-03/msg01048.html
So here I am with the same patch again.
This time I go further and deprecate the sheepdog driver entirely.
See the rationale in the second patch commit message.
Changes in v3:
- A few minor text changes
- Don't initialize static variable to false
Daniel P. Berrangé (2):
block: drop moderated sheepdog mailing list from MAINTAINERS file
block: deprecate the sheepdog block driver
MAINTAINERS | 1 -
block/sheepdog.c | 14 ++++++++++++++
configure | 5 +++--
docs/system/deprecated.rst | 9 +++++++++
4 files changed, 26 insertions(+), 3 deletions(-)
--
2.26.2
4 years, 2 months
[PATCH] docs: Document camelCase preference for XML elements and attributes
by Michal Privoznik
Recently I've merged a patch that used hyphens in an attribute
name. I fixed it later, but turned out we don't document our
preference which is camelCase.
Suggested-by: Erik Skultety <eskultet(a)redhat.com>
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
I'm not sure this is the correct place to put this, suggestions welcome.
docs/api_extension.html.in | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/docs/api_extension.html.in b/docs/api_extension.html.in
index 6c64e83314..d7696056ac 100644
--- a/docs/api_extension.html.in
+++ b/docs/api_extension.html.in
@@ -110,6 +110,12 @@
src/libvirt_public.syms
</code></p>
+ <p>
+ Please note that single word names for attributes and elements is
+ preferred. But if you have to use two ore more words please join them in
+ camelCase style.
+ </p>
+
<p>
This task is in many ways the most important to get right, since once
the API has been committed to the repository, it's libvirt's policy
--
2.26.2
4 years, 2 months
[libvirt PATCH] docs: Expand on recommendation in hypervisor-cpu-baseline description
by Tim Wiederhake
On some architectures, e.g. aarch64 and s390x, the output of
`virsh capabilities` is not suitable for use in
`virsh hypervisor-cpu-baseline`. Expand the description of the
man page to make this explicit.
https://bugzilla.redhat.com/show_bug.cgi?id=1850654
Signed-off-by: Tim Wiederhake <twiederh(a)redhat.com>
---
docs/manpages/virsh.rst | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 8fee4c7afe..d34a1c8684 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -976,8 +976,9 @@ as printed by ``capabilities`` command. The guest CPU definition may be created
from the host CPU model found in domain capabilities XML (printed by
``domcapabilities`` command). In addition to the <cpu> elements, this command
accepts full capabilities XMLs, or domain capabilities XMLs containing the CPU
-definitions. For best results, use only the CPU definitions from domain
-capabilities.
+definitions. It is recommended to use only the CPU definitions from domain
+capabilities, as on some architectures using the host CPU definition may either
+fail or provide unexpected results.
When *FILE* contains only a single CPU definition, the command will print the
same CPU with restrictions imposed by the capabilities of the hypervisor.
--
2.26.2
4 years, 2 months