[libvirt] [PATCH] Update keycodemapdb submodule for python2 compat fixes
by Daniel P. Berrange
There were a few bugs in keycodemap tool that broke it
when run on python circa 2.7.5 or older, which affected
RHEL builds.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
Pushed as a CI build fix for rhel6/7
src/keycodemapdb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/keycodemapdb b/src/keycodemapdb
index bd754b8..7bf5710 160000
--- a/src/keycodemapdb
+++ b/src/keycodemapdb
@@ -1 +1 @@
-Subproject commit bd754b861e7de5c7919aa249a975913cb207b85d
+Subproject commit 7bf5710b22aa8d58b7eeaaf3dc6960c26cade4f0
--
2.9.3
7 years, 7 months
[libvirt] [PATCH v2 00/13] Multiple cleanups within nwfilterobj and nwfilter drivers
by John Ferlan
v1: https://www.redhat.com/archives/libvir-list/2017-April/msg01074.html
Changes since v1:
* Patch 2 -> Do not add the local @def when just dereference obj->def
* Patch 13 & 15 dropped
Most patches were ACK'd, but patch 2's impact was felt in a few other
patches so I just resent the whole thing. In particular patch 5 for
nwfilterUndefine and nwfilterGetXMLDesc as well as patch 7 for the
_virNWFilterObjListDefLoopDetect call w/ _virNWFilterObjListDefLoopDetect
John Ferlan (13):
nwfilter: Use consistent naming for variables
nwfilter: Use virNWFilterDefPtr rather than deref virNWFilterObjPtr
nwfilter: Remove unused 'active' in virNWFilterObj
nwfilter: Convert wantRemoved to bool
nwfilter: Make _virNWFilterObjPtr private
nwfilter: Introduce virNWFilterObjNew
nwfilter: Rename some virNWFilterObj* API's
nwfilter: Make _virNWFilterObjList private
nwfilter: Make a common UUID lookup function from driver
nwfilter: Replace virNWFilterConfigFile with virFileBuildPath
nwfilter: Replace virNWFilterSaveDef with virNWFilterSaveConfig
nwfilter: Move creation of configDir to driver initialization
nwfilter: Move save of config until after successful assign
src/conf/nwfilter_conf.c | 57 +------
src/conf/nwfilter_conf.h | 8 -
src/conf/virnwfilterobj.c | 270 +++++++++++++++++++++------------
src/conf/virnwfilterobj.h | 70 ++++-----
src/libvirt_private.syms | 20 ++-
src/nwfilter/nwfilter_driver.c | 138 ++++++++++-------
src/nwfilter/nwfilter_gentech_driver.c | 42 ++---
7 files changed, 320 insertions(+), 285 deletions(-)
--
2.9.3
FWIW: The diffs between this series and the previous taking away patches 13/15:
diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c
index 62206b8..8c9da13 100644
--- a/src/conf/virnwfilterobj.c
+++ b/src/conf/virnwfilterobj.c
@@ -92,16 +92,11 @@ virNWFilterObjWantRemoved(virNWFilterObjPtr obj)
static void
virNWFilterObjFree(virNWFilterObjPtr obj)
{
- virNWFilterDefPtr def;
- virNWFilterDefPtr newDef;
-
if (!obj)
return;
- def = obj->def;
- newDef = obj->newDef;
- virNWFilterDefFree(def);
- virNWFilterDefFree(newDef);
+ virNWFilterDefFree(obj->def);
+ virNWFilterDefFree(obj->newDef);
virMutexDestroy(&obj->lock);
@@ -204,7 +199,6 @@ _virNWFilterObjListDefLoopDetect(virNWFilterObjListPtr nwfilters,
size_t i;
virNWFilterEntryPtr entry;
virNWFilterObjPtr obj;
- virNWFilterDefPtr objdef;
if (!def)
return 0;
@@ -221,8 +215,7 @@ _virNWFilterObjListDefLoopDetect(virNWFilterObjListPtr nwfilters,
obj = virNWFilterObjListFindByName(nwfilters,
entry->include->filterref);
if (obj) {
- objdef = obj->def;
- rc = _virNWFilterObjListDefLoopDetect(nwfilters, objdef,
+ rc = _virNWFilterObjListDefLoopDetect(nwfilters, obj->def,
filtername);
virNWFilterObjUnlock(obj);
if (rc < 0)
@@ -386,13 +379,11 @@ virNWFilterObjListNumOfNWFilters(virNWFilterObjListPtr nwfilters,
{
size_t i;
int nfilters = 0;
- virNWFilterDefPtr def;
for (i = 0; i < nwfilters->count; i++) {
virNWFilterObjPtr obj = nwfilters->objs[i];
virNWFilterObjLock(obj);
- def = obj->def;
- if (!aclfilter || aclfilter(conn, def))
+ if (!aclfilter || aclfilter(conn, obj->def))
nfilters++;
virNWFilterObjUnlock(obj);
}
7 years, 7 months
[libvirt] Unbounded client streams
by Michal Privoznik
Dear list,
as you might have seen, I've been playing with our streams lately. One
of the things I wanted to try was how my sparse streams deal with
vol-download and slow writer (e.g. slow disk). Note to whomever wants to
try that out: blkio,throttle.write_* is no good for this. So I went the
old way:
diff --git i/tools/virsh-util.c w/tools/virsh-util.c
index 4b86e29..8f5738d 100644
--- i/tools/virsh-util.c
+++ w/tools/virsh-util.c
@@ -149,6 +149,8 @@ virshStreamSink(virStreamPtr st ATTRIBUTE_UNUSED,
{
int *fd = opaque;
+ sleep(60);
+
return safewrite(*fd, bytes, nbytes);
}
And found out something ugly: the memory footprint of virsh just keeps
growing as vol-download progresses. I've tracked down the problem to:
1) The client event loop (virNetClientIOEventLoop) sees some incoming
data, so it reads it (virNetClientIOHandleInput ->
virNetClientCallDispatch) and queues the packet
(virNetClientCallDispatchStream) regardless of the length of already
queued packets
2) Since the server sees client has read all the data, it sends even
more data.
And the queue in step 1) just grows and grows. Ideally, the packets are
taken out from the queue by virStreamRecv (which boils down to
virNetClientStreamRecvPacket), but that is not on the schedule for the
next minute.
Frankly, I don't have any idea how to fix this. We can stop reading the
data (i.e. not set POLLIN on the client <-> server socket) if the queue
reaches certain length. BUT, this would mean no other call is processed.
Not even keepalive - and the connection would break.
The other option is to pretend I've never send this e-mail and you've
read nothing O:-)
Michal
7 years, 7 months
[libvirt] [PATCHv2 0/6] Support more options for intel-iommu
by Ján Tomko
For https://bugzilla.redhat.com/show_bug.cgi?id=1427005
v2:
* use != VIR_TRISTATE_SWITCH_ABSENT more often
* use symlinks for identical XMLs
* move capability checks in qemuBuildIOMMUCommandLine
to the beginning, to be shared with qemuBuildIOMMUCommandLine
Documentation changes reflecting current QEMU implementation limits
are not included.
Ján Tomko (6):
conf: add <irqchip mode> to <features>
qemu: format kernel_irqchip on the command line
conf: add <driver intremap> to <iommu>
qemu: format intremap= on intel-iommu command line
conf: add caching attribute to iommu device
qemu: format caching-mode on iommu command line
docs/formatdomain.html.in | 41 +++++++++-
docs/schemas/domaincommon.rng | 30 ++++++++
src/conf/domain_conf.c | 90 ++++++++++++++++++++--
src/conf/domain_conf.h | 14 ++++
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 12 +++
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 40 ++++++++++
tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.4.0.x86_64.replies | 22 ++++--
tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.5.0.x86_64.replies | 24 ++++--
tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 +
.../caps_2.6.0-gicv2.aarch64.xml | 1 +
.../caps_2.6.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 +
.../qemucapabilitiesdata/caps_2.6.0.x86_64.replies | 24 ++++--
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
.../qemucapabilitiesdata/caps_2.7.0.x86_64.replies | 28 +++++--
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 2 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
.../qemucapabilitiesdata/caps_2.8.0.x86_64.replies | 37 +++++++--
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 2 +
.../qemucapabilitiesdata/caps_2.9.0.x86_64.replies | 49 +++++++++---
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 3 +
.../qemuxml2argv-intel-iommu-caching.args | 19 +++++
.../qemuxml2argv-intel-iommu-caching.xml | 28 +++++++
.../qemuxml2argv-intel-iommu-irqchip.args | 19 +++++
.../qemuxml2argv-intel-iommu-irqchip.xml | 31 ++++++++
tests/qemuxml2argvtest.c | 10 +++
.../qemuxml2xmlout-intel-iommu-caching.xml | 1 +
.../qemuxml2xmlout-intel-iommu-irqchip.xml | 1 +
tests/qemuxml2xmltest.c | 2 +
37 files changed, 496 insertions(+), 49 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-caching.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
--
2.10.2
7 years, 7 months
[libvirt] [PATCH] Support CPU less NUMA node.
by Shaohe Feng
Some platform NUMA node does not include cpu, such as Phi.
This patch support CPU less NUMA node.
But there must be one CPU cell node for a guest.
Also must assign the host nodeset for this guest cell node.
please enable numactl with "--with-numactl" for libvirt config.
Test this patch:
1. define a numa cell without "cpus", such as cell 1.
<numatune>
<memnode cellid='1' mode='strict' nodeset='0'/>
</numatune>
<cpu>
<numa>
<cell id='0' cpus='0-1' memory='512000' unit='KiB'/>
<cell id='1' memory='512000' unit='KiB'/>
</numa>
</cpu>
libvirt can edit and start the VM successfully.
2. define a numa cell without "cpus", without nodeset.
<cpu>
<numa>
<cell id='0' cpus='0-1' memory='512000' unit='KiB'/>
<cell id='1' memory='512000' unit='KiB'/>
</numa>
</cpu>
This case, libvirt will failed to edit the CPUS.
---
src/conf/domain_conf.c | 4 +++
src/conf/numa_conf.c | 89 ++++++++++++++++++++++++++++++++++---------------
src/conf/numa_conf.h | 2 ++
src/qemu/qemu_command.c | 12 ++++---
src/util/virbitmap.c | 10 ++++--
5 files changed, 83 insertions(+), 34 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 705deb3..d6e5489 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -17330,6 +17330,10 @@ virDomainDefParseXML(xmlDocPtr xml,
ctxt) < 0)
goto error;
+ if (virDomainNumaCPULessCheck(def->numa) < 0){
+ goto error;
+ }
+
if (virDomainNumatuneHasPlacementAuto(def->numa) &&
!def->cpumask && !virDomainDefHasVcpuPin(def) &&
!def->cputune.emulatorpin &&
diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
index bfd3703..1b6f7ff 100644
--- a/src/conf/numa_conf.c
+++ b/src/conf/numa_conf.c
@@ -742,34 +742,31 @@ virDomainNumaDefCPUParseXML(virDomainNumaPtr def,
goto cleanup;
}
- if (!(tmp = virXMLPropString(nodes[i], "cpus"))) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("Missing 'cpus' attribute in NUMA cell"));
- goto cleanup;
- }
-
- if (virBitmapParse(tmp, &def->mem_nodes[cur_cell].cpumask,
- VIR_DOMAIN_CPUMASK_LEN) < 0)
- goto cleanup;
-
- if (virBitmapIsAllClear(def->mem_nodes[cur_cell].cpumask)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("NUMA cell %d has no vCPUs assigned"), cur_cell);
- goto cleanup;
- }
- VIR_FREE(tmp);
-
- for (j = 0; j < n; j++) {
- if (j == cur_cell || !def->mem_nodes[j].cpumask)
- continue;
+ tmp = virXMLPropString(nodes[i], "cpus");
+ if (tmp) {
+ if (virBitmapParse(tmp, &def->mem_nodes[cur_cell].cpumask,
+ VIR_DOMAIN_CPUMASK_LEN) < 0)
+ goto cleanup;
- if (virBitmapOverlaps(def->mem_nodes[j].cpumask,
- def->mem_nodes[cur_cell].cpumask)) {
+ if (virBitmapIsAllClear(def->mem_nodes[cur_cell].cpumask)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("NUMA cells %u and %zu have overlapping vCPU ids"),
- cur_cell, j);
+ _("NUMA cell %d has no vCPUs assigned"), cur_cell);
goto cleanup;
}
+ VIR_FREE(tmp);
+
+ for (j = 0; j < n; j++) {
+ if (j == cur_cell || !def->mem_nodes[j].cpumask)
+ continue;
+
+ if (virBitmapOverlaps(def->mem_nodes[j].cpumask,
+ def->mem_nodes[cur_cell].cpumask)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("NUMA cells %u and %zu have overlapping vCPU ids"),
+ cur_cell, j);
+ goto cleanup;
+ }
+ }
}
ctxt->node = nodes[i];
@@ -808,6 +805,7 @@ virDomainNumaDefCPUFormat(virBufferPtr buf,
char *cpustr;
size_t ncells = virDomainNumaGetNodeCount(def);
size_t i;
+ size_t ncpuless = 0;
if (ncells == 0)
return 0;
@@ -817,12 +815,24 @@ virDomainNumaDefCPUFormat(virBufferPtr buf,
for (i = 0; i < ncells; i++) {
memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i);
- if (!(cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i))))
- return -1;
+ cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i));
virBufferAddLit(buf, "<cell");
virBufferAsprintf(buf, " id='%zu'", i);
- virBufferAsprintf(buf, " cpus='%s'", cpustr);
+ if (cpustr && (*cpustr != 0))
+ virBufferAsprintf(buf, " cpus='%s'", cpustr);
+ else {
+ /* Note, at present we only allow cpuless numa node with */
+ /* nodeset assign. */
+ ncpuless++;
+ if (!virDomainNumatuneNodeSpecified(def, i)) {
+ VIR_FREE(cpustr);
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("CPUless NUMA node cellid %zu must be "
+ "specified node set."), i);
+ return -1;
+ }
+ }
virBufferAsprintf(buf, " memory='%llu'",
virDomainNumaGetNodeMemorySize(def, i));
virBufferAddLit(buf, " unit='KiB'");
@@ -835,6 +845,12 @@ virDomainNumaDefCPUFormat(virBufferPtr buf,
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</numa>\n");
+ if (ncpuless == ncells) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("At lease one NUMA node should "
+ "include CPU element."));
+ return -1;
+ }
return 0;
}
@@ -861,6 +877,7 @@ virDomainNumaGetMaxCPUID(virDomainNumaPtr numa)
int bit;
bit = virBitmapLastSetBit(virDomainNumaGetNodeCpumask(numa, i));
+ bit = (bit > 0) ? bit : 0;
if (bit > ret)
ret = bit;
}
@@ -973,3 +990,21 @@ virDomainNumaGetMemorySize(virDomainNumaPtr numa)
return ret;
}
+
+// NOTE, For some plateforms, there are some node without cpus, such as Phi.
+// We just need do some check for these plateforms, we must assigned nodeset
+// for CPU less node.
+int
+virDomainNumaCPULessCheck(virDomainNumaPtr numa)
+{
+ int ret = 0;
+ int i = 0;
+ for (i = 0; i < numa->nmem_nodes; i++){
+ if (!numa->mem_nodes[i].cpumask && !numa->mem_nodes[i].nodeset) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Cell: %d is a cpuless numa, must specfiy the nodeset."), i);
+ return -1;
+ }
+ }
+ return ret;
+}
diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h
index b6a5354..1f711e6 100644
--- a/src/conf/numa_conf.h
+++ b/src/conf/numa_conf.h
@@ -155,5 +155,7 @@ int virDomainNumaDefCPUFormat(virBufferPtr buf, virDomainNumaPtr def);
unsigned int virDomainNumaGetCPUCountTotal(virDomainNumaPtr numa);
+int virDomainNumaCPULessCheck(virDomainNumaPtr numa);
+
#endif /* __NUMA_CONF_H__ */
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index b2e76ca..b07ca66 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7665,11 +7665,13 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg,
virCommandAddArg(cmd, "-numa");
virBufferAsprintf(&buf, "node,nodeid=%zu", i);
- for (tmpmask = cpumask; tmpmask; tmpmask = next) {
- if ((next = strchr(tmpmask, ',')))
- *(next++) = '\0';
- virBufferAddLit(&buf, ",cpus=");
- virBufferAdd(&buf, tmpmask, -1);
+ if (*cpumask != 0) {
+ for (tmpmask = cpumask; tmpmask; tmpmask = next) {
+ if ((next = strchr(tmpmask, ',')))
+ *(next++) = '\0';
+ virBufferAddLit(&buf, ",cpus=");
+ virBufferAdd(&buf, tmpmask, -1);
+ }
}
if (needBackend)
diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
index eac63d9..b2803ce 100644
--- a/src/util/virbitmap.c
+++ b/src/util/virbitmap.c
@@ -953,6 +953,9 @@ virBitmapLastSetBit(virBitmapPtr bitmap)
unsigned long bits;
/* If bitmap is empty then there is no set bit */
+ if (!bitmap)
+ return -1;
+
if (bitmap->map_len == 0)
return -1;
@@ -1039,9 +1042,12 @@ virBitmapCountBits(virBitmapPtr bitmap)
size_t i;
size_t ret = 0;
- for (i = 0; i < bitmap->map_len; i++)
- ret += count_one_bits_l(bitmap->map[i]);
+ if (bitmap == NULL)
+ return ret;
+ for (i = 0; i < bitmap->map_len; i++) {
+ ret += count_one_bits_l(bitmap->map[i]);
+ }
return ret;
}
--
2.7.4
7 years, 7 months
[libvirt] [PATCH] virsh-domain: update attach-interface to support bridge type
by ZhiPeng Lu
Adding this feature will allow users to attach a network to linux bridge
or openvswitch. The interface can be attached using --brtype=linux or
--brtype=openvswitch. If --brtype is not set, the network is attached
to linux bridge.
Signed-off-by: ZhiPeng Lu <lu.zhipeng(a)zte.com.cn>
---
tools/virsh-domain.c | 23 +++++++++++++++++++++--
tools/virsh.pod | 3 +++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index db8accf..2690689 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -766,6 +766,10 @@ static const vshCmdOptDef opts_attach_interface[] = {
.type = VSH_OT_BOOL,
.help = N_("libvirt will automatically detach/attach the device from/to host")
},
+ {.name = "brtype",
+ .type = VSH_OT_STRING,
+ .help = N_("Bridge type: linux / openvswitch")
+ },
{.name = NULL}
};
@@ -819,7 +823,8 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
virDomainPtr dom = NULL;
const char *mac = NULL, *target = NULL, *script = NULL,
*type = NULL, *source = NULL, *model = NULL,
- *inboundStr = NULL, *outboundStr = NULL;
+ *inboundStr = NULL, *outboundStr = NULL,
+ *brtype = NULL;
virNetDevBandwidthRate inbound, outbound;
virDomainNetType typ;
int ret;
@@ -850,7 +855,8 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
vshCommandOptStringReq(ctl, cmd, "script", &script) < 0 ||
vshCommandOptStringReq(ctl, cmd, "model", &model) < 0 ||
vshCommandOptStringReq(ctl, cmd, "inbound", &inboundStr) < 0 ||
- vshCommandOptStringReq(ctl, cmd, "outbound", &outboundStr) < 0)
+ vshCommandOptStringReq(ctl, cmd, "outbound", &outboundStr) < 0 ||
+ vshCommandOptStringReq(ctl, cmd, "brtype", &brtype) < 0)
goto cleanup;
/* check interface type */
@@ -946,6 +952,19 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
if (model != NULL)
virBufferAsprintf(&buf, "<model type='%s'/>\n", model);
+ if ((brtype != NULL)) {
+ if (STRNEQ(brtype , "linux") && STRNEQ(brtype , "openvswitch")) {
+ vshError(ctl, _("bridge type is incorrect, should be linux "
+ "or openvswitch"));
+ goto cleanup;
+ }
+ if (typ != VIR_DOMAIN_NET_TYPE_BRIDGE) {
+ vshError(ctl, _("No support for %s with bridge type"), type);
+ goto cleanup;
+ }
+ if (STREQ(brtype , "openvswitch"))
+ virBufferAsprintf(&buf, " <virtualport type='openvswitch'/>\n");
+ }
if (inboundStr || outboundStr) {
virBufferAddLit(&buf, "<bandwidth>\n");
virBufferAdjustIndent(&buf, 2);
diff --git a/tools/virsh.pod b/tools/virsh.pod
index e16f62f..3cd0490 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -2935,6 +2935,9 @@ B<--managed> is usable only for I<hostdev> type and tells libvirt
that the interface should be managed, which means detached and reattached
from/to the host by libvirt.
+B<--brtype> is usable only for I<bridge> type and tells libvirt
+that the interface attached to bridge type (linux bridge or openvswitch).
+
If B<--print-xml> is specified, then the XML of the interface that would be
attached is printed instead.
--
1.8.3.1
7 years, 7 months
[libvirt] [PATCH 00/15] Multiple cleanups within nwfilterobj and nwfilter drivers
by John Ferlan
More adjustments in preparation for having virobject code handle the bulk
of the object management code.
I know it's a lot of patches, but reducing the amount of change overall has
the opposite effect of increasing the number patches to show the work flow.
Should make the "next" steps easier to review, but a couple of these will
be tedious.
John Ferlan (15):
nwfilter: Use consistent naming for variables
nwfilter: Use virNWFilterDefPtr rather than deref virNWFilterObjPtr
nwfilter: Remove unused 'active' in virNWFilterObj
nwfilter: Convert wantRemoved to bool
nwfilter: Make _virNWFilterObjPtr private
nwfilter: Introduce virNWFilterObjNew
nwfilter: Rename some virNWFilterObj* API's
nwfilter: Make _virNWFilterObjList private
nwfilter: Make a common UUID lookup function from driver
nwfilter: Replace virNWFilterConfigFile with virFileBuildPath
nwfilter: Replace virNWFilterSaveDef with virNWFilterSaveConfig
nwfilter: Move creation of configDir to driver initialization
nwfilter: Move configFile name processing into driver
nwfilter: Move save of config until after successful assign
nwfilter: Move and rename virNWFilterSaveConfig
src/conf/nwfilter_conf.c | 107 +-----------
src/conf/nwfilter_conf.h | 16 +-
src/conf/virnwfilterobj.c | 308 ++++++++++++++++++++++-----------
src/conf/virnwfilterobj.h | 74 ++++----
src/libvirt_private.syms | 21 ++-
src/nwfilter/nwfilter_driver.c | 148 ++++++++++------
src/nwfilter/nwfilter_gentech_driver.c | 42 +++--
7 files changed, 377 insertions(+), 339 deletions(-)
--
2.9.3
7 years, 7 months
[libvirt] [PATCH v3 0/2] Use the shared keycodemap database
by Daniel P. Berrange
Follow up to:
v1: https://www.redhat.com/archives/libvir-list/2017-March/msg00070.html
v2: https://www.redhat.com/archives/libvir-list/2017-March/msg00136.html
Changed in v3:
- Rebase onto new autogen.sh
- Use VIR_KEYMAP_ENTRY_MAX constant more
- Change style of make vars
- Fix & verify distcheck
Changed in v2:
- Fixed make syntax-check errors
- Auto-generate man pages listing value key codes for use with
the virDomainSendKey API / virsh send-key command
Daniel P. Berrange (2):
util: switch over to use keycodemapdb GIT submodule
Add ability to generate man page describing key code names & values
.gitignore | 3 +-
.gitmodules | 3 +
libvirt.spec.in | 1 +
mingw-libvirt.spec.in | 2 +
src/Makefile.am | 86 ++++++--
src/keycodemapdb | 1 +
src/util/keymaps.csv | 464 ------------------------------------------
src/util/virkeycode-mapgen.py | 97 ---------
src/util/virkeycode.c | 94 ++++-----
tests/virkeycodetest.c | 5 +
tools/virsh.pod | 20 ++
11 files changed, 153 insertions(+), 623 deletions(-)
create mode 160000 src/keycodemapdb
delete mode 100644 src/util/keymaps.csv
delete mode 100755 src/util/virkeycode-mapgen.py
--
2.9.3
7 years, 7 months
[libvirt] [PATCH 00/14] Multiple cleanups within secretobj and secret_driver
by John Ferlan
More adjustments in preparation for having virobject code handle the bulk
of the object management code.
I know it's a lot of patches, but most should be relatively simple - especially
the first 10... The last 4 set up for a "common" way to handle the config
directory space as well and could be a bit more controversial. Perhaps the
most being patch 12 which attempts to perform the mkdir of the configDir
during initialization rather than first "define" of secret. Although someone
could also pick out their own most favorite/controversial and surprise me.
John Ferlan (14):
secret: Need to set data->error on VIR_ALLOC_N failure
secret: Convert virsecretobjs.h to use "newer" formatting style
secret: Make some virSecretObj* functions static
secret: Have virSecretObjNew return locked object
secret: Use consistent naming for variables
secret: Use virSecretDefPtr rather than deref from virSecretObjPtr
secret: Move virSecretObjListGetUUIDs
secret: Change variable names for list traversals
secret: Split apart NumOfSecrets and GetUUIDs callback function
secret: Combine virSecretObjListAdd with Locked function
secret: Alter FindByUUID to expect the formatted uuidstr
secret: Generate configDir during driver initialization
secret: Alter configFile/base64File mgmt
secret: Clean up virSecretObjListExport logic
src/conf/virsecretobj.c | 557 +++++++++++++++++++++++----------------------
src/conf/virsecretobj.h | 120 +++++-----
src/secret/secret_driver.c | 178 ++++++++-------
3 files changed, 442 insertions(+), 413 deletions(-)
--
2.9.3
7 years, 7 months
[libvirt] [PATCH v2 0/2] Augment debug messages.
by Prerna Saxena
This is a v2 of the previous set of debug enhancements
posted at : https://www.redhat.com/archives/libvir-list/2017-March/msg00959.html
Changelog:
---------
1) Patch 1/3 : virNetSocketGetFD() is reverted to its old state,
and only new DEBUG messages are introduced.
2) Patch 2/3 : Dropped, per list suggestions.
3) Patch 3/3 : Same as v1
Prerna Saxena (2):
Debug: Add DEBUG messages for when a client has opened/closed
connection.
Debug: Report VM errors more concisely.
src/qemu/qemu_process.c | 4 ++--
src/rpc/virnetserverclient.c | 10 +++++++++-
2 files changed, 11 insertions(+), 3 deletions(-)
--
1.8.1.2
7 years, 7 months