[libvirt] [PATCH] nwfiler: Return error message about unresolvable variables
by Stefan Berger
This is in response to bugzilla 664629
https://bugzilla.redhat.com/show_bug.cgi?id=664629
The patch below returns an appropriate error message if the chain of
nwfilters is found to contain unresolvable variables and therefore
cannot be instantiated.
Example: The following XMl added to a domain:
<interface type='bridge'>
<mac address='52:54:00:9f:80:45'/>
<source bridge='virbr0'/>
<model type='virtio'/>
<filterref filter='test'/>
</interface>
that references the following filter
<filter name='test' chain='root'>
<filterref filter='clean-traffic'/>
<filterref filter='allow-dhcp-server'/>
</filter>
now displays upon 'virsh start mydomain'
error: Failed to start domain mydomain
error: internal error Cannot instantiate filter due to unresolvable variable: DHCPSERVER
'DHPCSERVER' is contained in allow-dhcp-server.
Signed-off-by: Stefan Berger <stefanb(a)linux.vnet.ibm.com>
---
src/nwfilter/nwfilter_gentech_driver.c | 84 +++++++++++++++++++++++++++++++--
1 file changed, 80 insertions(+), 4 deletions(-)
Index: libvirt-acl/src/nwfilter/nwfilter_gentech_driver.c
===================================================================
--- libvirt-acl.orig/src/nwfilter/nwfilter_gentech_driver.c
+++ libvirt-acl/src/nwfilter/nwfilter_gentech_driver.c
@@ -200,6 +200,68 @@ virNWFilterCreateVarHashmap(char *macadd
/**
+ * Convert a virNWFilterHashTable into a string of comma-separated
+ * variable names.
+ */
+struct printString
+{
+ virBuffer buf;
+ const char *separator;
+ bool reportMAC;
+ bool reportIP;
+};
+
+
+static void
+_printString(void *payload ATTRIBUTE_UNUSED, const void *name, void *data)
+{
+ struct printString *ps = data;
+
+ if ((STREQ((char *)name, NWFILTER_STD_VAR_IP ) && !ps->reportIP ) ||
+ (STREQ((char *)name, NWFILTER_STD_VAR_MAC) && !ps->reportMAC))
+ return;
+
+ if (virBufferUse(&ps->buf) && ps->separator)
+ virBufferAdd(&ps->buf, ps->separator, -1);
+
+ virBufferAdd(&ps->buf, name, -1);
+}
+
+/**
+ * virNWFilterPrintVars
+ *
+ * @var: hash table containing variables
+ * @separaptro: separator to use between variable names, i.e., ", "
+ * @reportMAC: whether to report the 'MAC' variable
+ * @reportIP : whether to report the IP variable
+ *
+ * Returns a string of comma separated variable names
+ */
+static char *
+virNWFilterPrintVars(virHashTablePtr vars,
+ const char *separator,
+ bool reportMAC,
+ bool reportIP)
+{
+ struct printString ps = {
+ .buf = VIR_BUFFER_INITIALIZER,
+ .separator = separator,
+ .reportMAC = reportMAC,
+ .reportIP = reportIP,
+ };
+
+ virHashForEach(vars, _printString, &ps);
+
+ if (virBufferError(&ps.buf)) {
+ virBufferFreeAndReset(&ps.buf);
+ virReportOOMError();
+ return NULL;
+ }
+ return virBufferContentAndReset(&ps.buf);
+}
+
+
+/**
* virNWFilterRuleInstantiate:
* @conn: pointer to virConnect object
* @techdriver: the driver to use for instantiation
@@ -575,6 +637,7 @@ virNWFilterInstantiate(virConnectPtr con
virNWFilterRuleInstPtr *insts = NULL;
void **ptrs = NULL;
int instantiate = 1;
+ char *buf;
virNWFilterHashTablePtr missing_vars = virNWFilterHashTableCreate(0);
if (!missing_vars) {
@@ -607,11 +670,9 @@ virNWFilterInstantiate(virConnectPtr con
}
goto err_exit;
}
- rc = 1;
- goto err_exit;
+ goto err_unresolvable_vars;
} else if (virHashSize(missing_vars->hashTable) > 1) {
- rc = 1;
- goto err_exit;
+ goto err_unresolvable_vars;
} else if (!forceWithPendingReq &&
virNWFilterLookupLearnReq(ifindex) != NULL) {
goto err_exit;
@@ -674,6 +735,21 @@ err_exit:
virNWFilterHashTableFree(missing_vars);
return rc;
+
+err_unresolvable_vars:
+
+ buf = virNWFilterPrintVars(missing_vars->hashTable, ", ", false, false);
+ if (buf) {
+ virNWFilterReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Cannot instantiate filter due to unresolvable "
+ "variable%s: %s"),
+ strstr(buf, ", ") ? "s" : "",
+ buf);
+ VIR_FREE(buf);
+ }
+
+ rc = 1;
+ goto err_exit;
}
13 years, 9 months
[libvirt] [PATCH 0/2] RFC: make QEMU timeout monitor replies
by Daniel P. Berrange
This is an experimental patch to make QEMU timeout on monitor
replies after 30 seconds. I have only tested it to the extent
of booting a guest. Interested in whether people can get a
bogus timeout to occur in any testing they perform.
By 'bogus timeout', I mean libvirt reporting a timeout when
QEMU is still working correctly. Ideally we only timeout when
QEMU has been sent SIGSTOP, or has live-locked itself.
13 years, 9 months
[libvirt] Confusing valgrind error in virDomainLookupByUUIDString or virReportErrorHelper
by Richard W.M. Jones
libvirt-0.9.2-2.fc16.x86_64
Here's the error from valgrind:
==24953== Conditional jump or move depends on uninitialised value(s)
==24953== at 0x3DF68844BB: __GI___strcasecmp_l (strcmp.S:243)
==24953== by 0x3DF68221E1: __gconv_open (gconv_open.c:70)
==24953== by 0x3DF682F3E9: _nl_find_msg (dcigettext.c:974)
==24953== by 0x3DF682FB84: __dcigettext (dcigettext.c:640)
==24953== by 0x36BBE5A063: virReportErrorHelper (virterror.c:1215)
==24953== by 0x36BBEA3804: virDomainLookupByUUIDString (libvirt.c:2005)
==24953== by 0x4C9174C: guestfs__add_domain (virt.c:122)
==24953== by 0x4C4862B: guestfs_add_domain_argv (actions.c:2951)
==24953== by 0x42635A: add_libvirt_drives (virt.c:54)
==24953== by 0x4260D8: add_drives (options.c:69)
==24953== by 0x40B1F6: main (fish.c:422)
It appears to originate from this code:
src/libvirt.c:virDomainLookupByUUIDString:
if (virUUIDParse(uuidstr, uuid) < 0) {
2005 ** virLibConnError(VIR_ERR_INVALID_ARG, __FUNCTION__);
goto error;
}
The macro at line 2005 expands to:
virReportErrorHelper(VIR_FROM_NONE, VIR_ERR_INVALID_ARG, __FILE__, \
__FUNCTION__, __LINE__, __FUNCTION__);
Apparently __FUNCTION__ is deprecated[1].
When virReportErrorHelper is called, the problem appears to be at this
line (virterror.c:1215):
virerr = virErrorMsg(errcode, (errorMessage[0] ? errorMessage : NULL));
Here, errcode == VIR_ERR_INVALID_ARG and errorMessage is presumably
the function name.
That's as far as I've got for today. Just letting people know ...
Rich.
[1] http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
13 years, 9 months
[libvirt] [PATCH] build: rename Vcpupin to VcpuPin
by Eric Blake
We already have a public virDomainPinVcpu, which implies that
Pin and Vcpu are treated as separate words. Commit e261987c
introduced virDomainGetVcpupinInfo as the first public API
that used Vcpupin, although we had prior internal uses of that
spelling. For consistency, change the spelling to be two
words everywhere, regardless of whether pin comes first or last.
* daemon/remote.c: Treat vcpu and pin as separate words.
* include/libvirt/libvirt.h.in: Likewise.
* src/conf/domain_conf.c: Likewise.
* src/conf/domain_conf.h: Likewise.
* src/driver.h: Likewise.
* src/libvirt.c: Likewise.
* src/libvirt_private.syms: Likewise.
* src/libvirt_public.syms: Likewise.
* src/libxl/libxl_driver.c: Likewise.
* src/qemu/qemu_driver.c: Likewise.
* src/remote/remote_driver.c: Likewise.
* src/xen/xend_internal.c: Likewise.
* tools/virsh.c: Likewise.
* src/remote/remote_protocol.x: Likewise.
* src/remote_protocol-structs: Likewise.
Suggested by Matthias Bolte.
---
In response to http://www.redhat.com/archives/libvir-list/2011-June/msg01292.html
daemon/remote.c | 8 ++++----
include/libvirt/libvirt.h.in | 2 +-
src/conf/domain_conf.c | 40 ++++++++++++++++++++--------------------
src/conf/domain_conf.h | 16 ++++++++--------
src/driver.h | 4 ++--
src/libvirt.c | 12 ++++++------
src/libvirt_private.syms | 8 ++++----
src/libvirt_public.syms | 2 +-
src/libxl/libxl_driver.c | 2 +-
src/qemu/qemu_driver.c | 14 +++++++-------
src/remote/remote_driver.c | 16 ++++++++--------
src/remote/remote_protocol.x | 6 +++---
src/remote_protocol-structs | 4 ++--
src/xen/xend_internal.c | 2 +-
tools/virsh.c | 10 +++++-----
15 files changed, 73 insertions(+), 73 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c
index aa726cf..56361ea 100644
--- a/daemon/remote.c
+++ b/daemon/remote.c
@@ -1048,13 +1048,13 @@ cleanup:
}
static int
-remoteDispatchDomainGetVcpupinInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
+remoteDispatchDomainGetVcpuPinInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
struct qemud_client *client ATTRIBUTE_UNUSED,
virConnectPtr conn,
remote_message_header *hdr ATTRIBUTE_UNUSED,
remote_error *rerr,
- remote_domain_get_vcpupin_info_args *args,
- remote_domain_get_vcpupin_info_ret *ret)
+ remote_domain_get_vcpu_pin_info_args *args,
+ remote_domain_get_vcpu_pin_info_ret *ret)
{
virDomainPtr dom = NULL;
unsigned char *cpumaps = NULL;
@@ -1085,7 +1085,7 @@ remoteDispatchDomainGetVcpupinInfo(struct qemud_server *server ATTRIBUTE_UNUSED,
VIR_ALLOC_N(cpumaps, args->ncpumaps * args->maplen) < 0)
goto no_memory;
- if ((num = virDomainGetVcpupinInfo(dom,
+ if ((num = virDomainGetVcpuPinInfo(dom,
args->ncpumaps,
cpumaps,
args->maplen,
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index 4f9f158..82e15f2 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -1266,7 +1266,7 @@ int virDomainPinVcpuFlags (virDomainPtr domain,
int maplen,
unsigned int flags);
-int virDomainGetVcpupinInfo (virDomainPtr domain,
+int virDomainGetVcpuPinInfo (virDomainPtr domain,
int ncpumaps,
unsigned char *cpumaps,
int maplen,
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 3d290fb..60e0318 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -981,7 +981,7 @@ virDomainClockDefClear(virDomainClockDefPtr def)
}
static void
-virDomainVcpupinDefFree(virDomainVcpupinDefPtr *def,
+virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr *def,
int nvcpupin)
{
int i;
@@ -1089,7 +1089,7 @@ void virDomainDefFree(virDomainDefPtr def)
virCPUDefFree(def->cpu);
- virDomainVcpupinDefFree(def->cputune.vcpupin, def->cputune.nvcpupin);
+ virDomainVcpuPinDefFree(def->cputune.vcpupin, def->cputune.nvcpupin);
VIR_FREE(def->numatune.memory.nodemask);
@@ -5647,13 +5647,13 @@ cleanup:
}
/* Parse the XML definition for a vcpupin */
-static virDomainVcpupinDefPtr
-virDomainVcpupinDefParseXML(const xmlNodePtr node,
+static virDomainVcpuPinDefPtr
+virDomainVcpuPinDefParseXML(const xmlNodePtr node,
xmlXPathContextPtr ctxt,
int maxvcpus,
int flags ATTRIBUTE_UNUSED)
{
- virDomainVcpupinDefPtr def;
+ virDomainVcpuPinDefPtr def;
xmlNodePtr oldnode = ctxt->node;
unsigned int vcpuid;
char *tmp = NULL;
@@ -5895,13 +5895,13 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
}
for (i = 0 ; i < n ; i++) {
- virDomainVcpupinDefPtr vcpupin = NULL;
- vcpupin = virDomainVcpupinDefParseXML(nodes[i], ctxt, def->maxvcpus, 0);
+ virDomainVcpuPinDefPtr vcpupin = NULL;
+ vcpupin = virDomainVcpuPinDefParseXML(nodes[i], ctxt, def->maxvcpus, 0);
if (!vcpupin)
goto error;
- if (virDomainVcpupinIsDuplicate(def->cputune.vcpupin,
+ if (virDomainVcpuPinIsDuplicate(def->cputune.vcpupin,
def->cputune.nvcpupin,
vcpupin->vcpuid)) {
virDomainReportError(VIR_ERR_INTERNAL_ERROR,
@@ -8118,7 +8118,7 @@ virDomainCpuSetParse(const char **str, char sep,
/* Check if vcpupin with same vcpuid already exists.
* Return 1 if exists, 0 if not. */
int
-virDomainVcpupinIsDuplicate(virDomainVcpupinDefPtr *def,
+virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def,
int nvcpupin,
int vcpu)
{
@@ -8135,8 +8135,8 @@ virDomainVcpupinIsDuplicate(virDomainVcpupinDefPtr *def,
return 0;
}
-virDomainVcpupinDefPtr
-virDomainVcpupinFindByVcpu(virDomainVcpupinDefPtr *def,
+virDomainVcpuPinDefPtr
+virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def,
int nvcpupin,
int vcpu)
{
@@ -8154,13 +8154,13 @@ virDomainVcpupinFindByVcpu(virDomainVcpupinDefPtr *def,
}
int
-virDomainVcpupinAdd(virDomainDefPtr def,
+virDomainVcpuPinAdd(virDomainDefPtr def,
unsigned char *cpumap,
int maplen,
int vcpu)
{
- virDomainVcpupinDefPtr *vcpupin_list = NULL;
- virDomainVcpupinDefPtr vcpupin = NULL;
+ virDomainVcpuPinDefPtr *vcpupin_list = NULL;
+ virDomainVcpuPinDefPtr vcpupin = NULL;
char *cpumask = NULL;
int i;
@@ -8202,10 +8202,10 @@ virDomainVcpupinAdd(virDomainDefPtr def,
def->cputune.vcpupin = vcpupin_list;
} else {
- if (virDomainVcpupinIsDuplicate(def->cputune.vcpupin,
+ if (virDomainVcpuPinIsDuplicate(def->cputune.vcpupin,
def->cputune.nvcpupin,
vcpu)) {
- vcpupin = virDomainVcpupinFindByVcpu(def->cputune.vcpupin,
+ vcpupin = virDomainVcpuPinFindByVcpu(def->cputune.vcpupin,
def->cputune.nvcpupin,
vcpu);
vcpupin->vcpuid = vcpu;
@@ -8236,11 +8236,11 @@ cleanup:
}
int
-virDomainVcpupinDel(virDomainDefPtr def, int vcpu)
+virDomainVcpuPinDel(virDomainDefPtr def, int vcpu)
{
int n;
bool deleted = false;
- virDomainVcpupinDefPtr *vcpupin_list = def->cputune.vcpupin;
+ virDomainVcpuPinDefPtr *vcpupin_list = def->cputune.vcpupin;
/* No vcpupin exists yet */
if (!def->cputune.nvcpupin) {
@@ -8253,7 +8253,7 @@ virDomainVcpupinDel(virDomainDefPtr def, int vcpu)
VIR_FREE(vcpupin_list[n]);
memmove(&vcpupin_list[n],
&vcpupin_list[n+1],
- (def->cputune.nvcpupin - n - 1) * sizeof(virDomainVcpupinDef *));
+ (def->cputune.nvcpupin - n - 1) * sizeof(virDomainVcpuPinDef *));
deleted = true;
break;
}
@@ -8263,7 +8263,7 @@ virDomainVcpupinDel(virDomainDefPtr def, int vcpu)
return 0;
if (--def->cputune.nvcpupin == 0) {
- virDomainVcpupinDefFree(def->cputune.vcpupin, 0);
+ virDomainVcpuPinDefFree(def->cputune.vcpupin, 0);
} else {
if (VIR_REALLOC_N(def->cputune.vcpupin, def->cputune.nvcpupin) < 0) {
virReportOOMError();
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index aa25e36..e81977c 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1101,18 +1101,18 @@ void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,
int virDomainSnapshotHasChildren(virDomainSnapshotObjPtr snap,
virDomainSnapshotObjListPtr snapshots);
-typedef struct _virDomainVcpupinDef virDomainVcpupinDef;
-typedef virDomainVcpupinDef *virDomainVcpupinDefPtr;
-struct _virDomainVcpupinDef {
+typedef struct _virDomainVcpuPinDef virDomainVcpuPinDef;
+typedef virDomainVcpuPinDef *virDomainVcpuPinDefPtr;
+struct _virDomainVcpuPinDef {
int vcpuid;
char *cpumask;
};
-int virDomainVcpupinIsDuplicate(virDomainVcpupinDefPtr *def,
+int virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def,
int nvcpupin,
int vcpu);
-virDomainVcpupinDefPtr virDomainVcpupinFindByVcpu(virDomainVcpupinDefPtr *def,
+virDomainVcpuPinDefPtr virDomainVcpuPinFindByVcpu(virDomainVcpuPinDefPtr *def,
int nvcpupin,
int vcpu);
@@ -1171,7 +1171,7 @@ struct _virDomainDef {
struct {
unsigned long shares;
int nvcpupin;
- virDomainVcpupinDefPtr *vcpupin;
+ virDomainVcpuPinDefPtr *vcpupin;
} cputune;
virDomainNumatuneDef numatune;
@@ -1406,12 +1406,12 @@ int virDomainCpuSetParse(const char **str,
char *virDomainCpuSetFormat(char *cpuset,
int maxcpu);
-int virDomainVcpupinAdd(virDomainDefPtr def,
+int virDomainVcpuPinAdd(virDomainDefPtr def,
unsigned char *cpumap,
int maplen,
int vcpu);
-int virDomainVcpupinDel(virDomainDefPtr def, int vcpu);
+int virDomainVcpuPinDel(virDomainDefPtr def, int vcpu);
int virDomainDiskIndexByName(virDomainDefPtr def, const char *name);
int virDomainDiskInsert(virDomainDefPtr def,
diff --git a/src/driver.h b/src/driver.h
index c15d0dd..60cd556 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -240,7 +240,7 @@ typedef int
int maplen,
unsigned int flags);
typedef int
- (*virDrvDomainGetVcpupinInfo) (virDomainPtr domain,
+ (*virDrvDomainGetVcpuPinInfo) (virDomainPtr domain,
int ncpumaps,
unsigned char *cpumaps,
int maplen,
@@ -713,7 +713,7 @@ struct _virDriver {
virDrvDomainGetVcpusFlags domainGetVcpusFlags;
virDrvDomainPinVcpu domainPinVcpu;
virDrvDomainPinVcpuFlags domainPinVcpuFlags;
- virDrvDomainGetVcpupinInfo domainGetVcpupinInfo;
+ virDrvDomainGetVcpuPinInfo domainGetVcpuPinInfo;
virDrvDomainGetVcpus domainGetVcpus;
virDrvDomainGetMaxVcpus domainGetMaxVcpus;
virDrvDomainGetSecurityLabel domainGetSecurityLabel;
diff --git a/src/libvirt.c b/src/libvirt.c
index 46a448b..a3f3267 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -7061,7 +7061,7 @@ error:
* just live or both live and persistent state is changed.
* Not all hypervisors can support all flag combinations.
*
- * See also virDomainGetVcpupinInfo for querying this information.
+ * See also virDomainGetVcpuPinInfo for querying this information.
*
* Returns 0 in case of success, -1 in case of failure.
*
@@ -7112,7 +7112,7 @@ error:
}
/**
- * virDomainGetVcpupinInfo:
+ * virDomainGetVcpuPinInfo:
* @domain: pointer to domain object, or NULL for Domain0
* @ncpumaps: the number of cpumap (listed first to match virDomainGetVcpus)
* @cpumaps: pointer to a bit map of real CPUs for all vcpus of this
@@ -7136,7 +7136,7 @@ error:
* -1 in case of failure.
*/
int
-virDomainGetVcpupinInfo (virDomainPtr domain, int ncpumaps,
+virDomainGetVcpuPinInfo (virDomainPtr domain, int ncpumaps,
unsigned char *cpumaps, int maplen, unsigned int flags)
{
virConnectPtr conn;
@@ -7160,9 +7160,9 @@ virDomainGetVcpupinInfo (virDomainPtr domain, int ncpumaps,
conn = domain->conn;
- if (conn->driver->domainGetVcpupinInfo) {
+ if (conn->driver->domainGetVcpuPinInfo) {
int ret;
- ret = conn->driver->domainGetVcpupinInfo (domain, ncpumaps,
+ ret = conn->driver->domainGetVcpuPinInfo (domain, ncpumaps,
cpumaps, maplen, flags);
if (ret < 0)
goto error;
@@ -7197,7 +7197,7 @@ error:
* and also in cpumaps if this pointer isn't NULL. This call may fail
* on an inactive domain.
*
- * See also virDomainGetVcpupinInfo for querying just cpumaps, including on
+ * See also virDomainGetVcpuPinInfo for querying just cpumaps, including on
* an inactive domain.
*
* Returns the number of info filled in case of success, -1 in case of failure.
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index afe9835..054c074 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -366,10 +366,10 @@ virDomainTimerTickpolicyTypeFromString;
virDomainTimerTickpolicyTypeToString;
virDomainTimerTrackTypeFromString;
virDomainTimerTrackTypeToString;
-virDomainVcpupinAdd;
-virDomainVcpupinDel;
-virDomainVcpupinFindByVcpu;
-virDomainVcpupinIsDuplicate;
+virDomainVcpuPinAdd;
+virDomainVcpuPinDel;
+virDomainVcpuPinFindByVcpu;
+virDomainVcpuPinIsDuplicate;
virDomainVideoDefFree;
virDomainVideoDefaultRAM;
virDomainVideoDefaultType;
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
index c7dc3c5..5f2541a 100644
--- a/src/libvirt_public.syms
+++ b/src/libvirt_public.syms
@@ -453,7 +453,7 @@ LIBVIRT_0.9.2 {
LIBVIRT_0.9.3 {
global:
virDomainGetControlInfo;
- virDomainGetVcpupinInfo;
+ virDomainGetVcpuPinInfo;
virDomainPinVcpuFlags;
virDomainSendKey;
virEventAddHandle;
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 5a5951f..7fd257d 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -2393,7 +2393,7 @@ libxlDomainPinVcpu(virDomainPtr dom, unsigned int vcpu, unsigned char *cpumap,
goto cleanup;
}
- if (virDomainVcpupinAdd(vm->def, cpumap, maplen, vcpu) < 0) {
+ if (virDomainVcpuPinAdd(vm->def, cpumap, maplen, vcpu) < 0) {
libxlError(VIR_ERR_INTERNAL_ERROR,
"%s", _("failed to update or add vcpupin xml"));
goto cleanup;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index d9099d5..c291e16 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3109,14 +3109,14 @@ qemudDomainPinVcpuFlags(virDomainPtr dom,
}
if (canResetting) {
- if (virDomainVcpupinDel(vm->def, vcpu) < 0) {
+ if (virDomainVcpuPinDel(vm->def, vcpu) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to delete vcpupin xml of "
"a running domain"));
goto cleanup;
}
} else {
- if (virDomainVcpupinAdd(vm->def, cpumap, maplen, vcpu) < 0) {
+ if (virDomainVcpuPinAdd(vm->def, cpumap, maplen, vcpu) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to update or add vcpupin xml of "
"a running domain"));
@@ -3129,14 +3129,14 @@ qemudDomainPinVcpuFlags(virDomainPtr dom,
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
if (canResetting) {
- if (virDomainVcpupinDel(persistentDef, vcpu) < 0) {
+ if (virDomainVcpuPinDel(persistentDef, vcpu) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to delete vcpupin xml of "
"a persistent domain"));
goto cleanup;
}
} else {
- if (virDomainVcpupinAdd(persistentDef, cpumap, maplen, vcpu) < 0) {
+ if (virDomainVcpuPinAdd(persistentDef, cpumap, maplen, vcpu) < 0) {
qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to update or add vcpupin xml of "
"a persistent domain"));
@@ -3166,7 +3166,7 @@ qemudDomainPinVcpu(virDomainPtr dom,
}
static int
-qemudDomainGetVcpupinInfo(virDomainPtr dom,
+qemudDomainGetVcpuPinInfo(virDomainPtr dom,
int ncpumaps,
unsigned char *cpumaps,
int maplen,
@@ -3180,7 +3180,7 @@ qemudDomainGetVcpupinInfo(virDomainPtr dom,
bool isActive;
int maxcpu, hostcpus, vcpu, pcpu;
int n;
- virDomainVcpupinDefPtr *vcpupin_list;
+ virDomainVcpuPinDefPtr *vcpupin_list;
char *cpumask = NULL;
unsigned char *cpumap;
@@ -8446,7 +8446,7 @@ static virDriver qemuDriver = {
.domainGetVcpusFlags = qemudDomainGetVcpusFlags, /* 0.8.5 */
.domainPinVcpu = qemudDomainPinVcpu, /* 0.4.4 */
.domainPinVcpuFlags = qemudDomainPinVcpuFlags, /* 0.9.3 */
- .domainGetVcpupinInfo = qemudDomainGetVcpupinInfo, /* 0.9.3 */
+ .domainGetVcpuPinInfo = qemudDomainGetVcpuPinInfo, /* 0.9.3 */
.domainGetVcpus = qemudDomainGetVcpus, /* 0.4.4 */
.domainGetMaxVcpus = qemudDomainGetMaxVcpus, /* 0.4.4 */
.domainGetSecurityLabel = qemudDomainGetSecurityLabel, /* 0.6.1 */
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 84a5eab..ac00128 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -2142,7 +2142,7 @@ done:
}
static int
-remoteDomainGetVcpupinInfo (virDomainPtr domain,
+remoteDomainGetVcpuPinInfo (virDomainPtr domain,
int ncpumaps,
unsigned char *cpumaps,
int maplen,
@@ -2150,8 +2150,8 @@ remoteDomainGetVcpupinInfo (virDomainPtr domain,
{
int rv = -1;
int i;
- remote_domain_get_vcpupin_info_args args;
- remote_domain_get_vcpupin_info_ret ret;
+ remote_domain_get_vcpu_pin_info_args args;
+ remote_domain_get_vcpu_pin_info_ret ret;
struct private_data *priv = domain->conn->privateData;
remoteDriverLock(priv);
@@ -2178,10 +2178,10 @@ remoteDomainGetVcpupinInfo (virDomainPtr domain,
memset (&ret, 0, sizeof ret);
- if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_VCPUPIN_INFO,
- (xdrproc_t) xdr_remote_domain_get_vcpupin_info_args,
+ if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO,
+ (xdrproc_t) xdr_remote_domain_get_vcpu_pin_info_args,
(char *) &args,
- (xdrproc_t) xdr_remote_domain_get_vcpupin_info_ret,
+ (xdrproc_t) xdr_remote_domain_get_vcpu_pin_info_ret,
(char *) &ret) == -1)
goto done;
@@ -2207,7 +2207,7 @@ remoteDomainGetVcpupinInfo (virDomainPtr domain,
rv = ret.num;
cleanup:
- xdr_free ((xdrproc_t) xdr_remote_domain_get_vcpupin_info_ret, (char *) &ret);
+ xdr_free ((xdrproc_t) xdr_remote_domain_get_vcpu_pin_info_ret, (char *) &ret);
done:
remoteDriverUnlock(priv);
@@ -6465,7 +6465,7 @@ static virDriver remote_driver = {
.domainGetVcpusFlags = remoteDomainGetVcpusFlags, /* 0.8.5 */
.domainPinVcpu = remoteDomainPinVcpu, /* 0.3.0 */
.domainPinVcpuFlags = remoteDomainPinVcpuFlags, /* 0.9.3 */
- .domainGetVcpupinInfo = remoteDomainGetVcpupinInfo, /* 0.9.3 */
+ .domainGetVcpuPinInfo = remoteDomainGetVcpuPinInfo, /* 0.9.3 */
.domainGetVcpus = remoteDomainGetVcpus, /* 0.3.0 */
.domainGetMaxVcpus = remoteDomainGetMaxVcpus, /* 0.3.0 */
.domainGetSecurityLabel = remoteDomainGetSecurityLabel, /* 0.6.1 */
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index ee08b82..65a4432 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -903,14 +903,14 @@ struct remote_domain_pin_vcpu_flags_args {
unsigned int flags;
};
-struct remote_domain_get_vcpupin_info_args {
+struct remote_domain_get_vcpu_pin_info_args {
remote_nonnull_domain dom;
int ncpumaps;
int maplen;
unsigned int flags;
};
-struct remote_domain_get_vcpupin_info_ret {
+struct remote_domain_get_vcpu_pin_info_ret {
opaque cpumaps<REMOTE_CPUMAPS_MAX>;
int num;
};
@@ -2392,7 +2392,7 @@ enum remote_procedure {
REMOTE_PROC_NODE_GET_CPU_STATS = 227, /* skipgen skipgen */
REMOTE_PROC_NODE_GET_MEMORY_STATS = 228, /* skipgen skipgen */
REMOTE_PROC_DOMAIN_GET_CONTROL_INFO = 229, /* autogen autogen */
- REMOTE_PROC_DOMAIN_GET_VCPUPIN_INFO = 230 /* skipgen skipgen */
+ REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO = 230 /* skipgen skipgen */
/*
* Notice how the entries are grouped in sets of 10 ?
diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
index be98135..c07ba81 100644
--- a/src/remote_protocol-structs
+++ b/src/remote_protocol-structs
@@ -580,13 +580,13 @@ struct remote_domain_pin_vcpu_flags_args {
} cpumap;
u_int flags;
};
-struct remote_domain_get_vcpupin_info_args {
+struct remote_domain_get_vcpu_pin_info_args {
remote_nonnull_domain dom;
int ncpumaps;
int maplen;
u_int flags;
};
-struct remote_domain_get_vcpupin_info_ret {
+struct remote_domain_get_vcpu_pin_info_ret {
struct {
u_int cpumaps_len;
char * cpumaps_val;
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index f94dd8b..d418847 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -2332,7 +2332,7 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
goto cleanup;
if (ret == 0) {
- if (virDomainVcpupinAdd(def, cpumap, maplen, vcpu) < 0) {
+ if (virDomainVcpuPinAdd(def, cpumap, maplen, vcpu) < 0) {
virXendError(VIR_ERR_INTERNAL_ERROR,
"%s", _("failed to add vcpupin xml entry"));
return (-1);
diff --git a/tools/virsh.c b/tools/virsh.c
index 31fbeb7..8e6439f 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -2962,11 +2962,11 @@ cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd)
}
} else {
if (info.state == VIR_DOMAIN_SHUTOFF &&
- (ncpus = virDomainGetVcpupinInfo(dom, info.nrVirtCpu,
+ (ncpus = virDomainGetVcpuPinInfo(dom, info.nrVirtCpu,
cpumaps, cpumaplen,
VIR_DOMAIN_AFFECT_CONFIG)) >= 0) {
- /* fallback plan to use virDomainGetVcpupinInfo */
+ /* fallback plan to use virDomainGetVcpuPinInfo */
for (n = 0; n < ncpus; n++) {
vshPrint(ctl, "%-15s %d\n", _("VCPU:"), n);
@@ -3015,7 +3015,7 @@ static const vshCmdOptDef opts_vcpupin[] = {
};
static bool
-cmdVcpupin(vshControl *ctl, const vshCmd *cmd)
+cmdVcpuPin(vshControl *ctl, const vshCmd *cmd)
{
virDomainInfo info;
virDomainPtr dom;
@@ -3101,7 +3101,7 @@ cmdVcpupin(vshControl *ctl, const vshCmd *cmd)
flags = VIR_DOMAIN_AFFECT_CURRENT;
cpumaps = vshMalloc(ctl, info.nrVirtCpu * cpumaplen);
- if ((ncpus = virDomainGetVcpupinInfo(dom, info.nrVirtCpu,
+ if ((ncpus = virDomainGetVcpuPinInfo(dom, info.nrVirtCpu,
cpumaps, cpumaplen, flags)) >= 0) {
vshPrint(ctl, "%s %s\n", _("VCPU:"), _("CPU Affinity"));
@@ -11674,7 +11674,7 @@ static const vshCmdDef domManagementCmds[] = {
info_update_device, 0},
{"vcpucount", cmdVcpucount, opts_vcpucount, info_vcpucount, 0},
{"vcpuinfo", cmdVcpuinfo, opts_vcpuinfo, info_vcpuinfo, 0},
- {"vcpupin", cmdVcpupin, opts_vcpupin, info_vcpupin, 0},
+ {"vcpupin", cmdVcpuPin, opts_vcpupin, info_vcpupin, 0},
{"version", cmdVersion, opts_version, info_version, 0},
{"vncdisplay", cmdVNCDisplay, opts_vncdisplay, info_vncdisplay, 0},
{NULL, NULL, NULL, NULL, 0}
--
1.7.4.4
13 years, 9 months
[libvirt] [PATCH] Only include parthelper if built with storage_disk
by Ruben Kerkhof
Parthelper is only compiled if both --with-libvirtd
and --with-storage-disk are set.
Signed-off-by: Ruben Kerkhof <ruben(a)rubenkerkhof.com>
---
libvirt.spec.in | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 11b8591..0111519 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1016,7 +1016,10 @@ fi
%attr(0755, root, root) %{_libexecdir}/libvirt_lxc
%endif
+%if %{with_storage_disk}
%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
+%endif
+
%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper
%attr(0755, root, root) %{_sbindir}/libvirtd
--
1.7.5.4
13 years, 9 months
[libvirt] sysinfo: cleanup function/struct names.
by Minoru Usui
Fix lack of 'virSysinfo' prefix of functions/structs in src/util/sysinfo.[ch]
diff --git a/src/util/sysinfo.c b/src/util/sysinfo.c
index fab4f06..3ff834e 100644
Signed-off-by: Minoru Usui <usui(a)mxm.nes.nec.co.jp>
---
src/util/sysinfo.c | 44 ++++++++++++++++++++++++--------------------
src/util/sysinfo.h | 16 ++++++++--------
2 files changed, 32 insertions(+), 28 deletions(-)
diff --git a/src/util/sysinfo.c b/src/util/sysinfo.c
index fab4f06..31ebdc2 100644
--- a/src/util/sysinfo.c
+++ b/src/util/sysinfo.c
@@ -128,7 +128,7 @@ virSysinfoRead(void) {
#else /* !WIN32 */
static char *
-parseBIOSInfo(char *base, virSysinfoDefPtr ret)
+virSysinfoParseBIOS(char *base, virSysinfoDefPtr ret)
{
char *cur, *eol;
@@ -164,7 +164,7 @@ no_memory:
}
static char *
-parseSystemInfo(char *base, virSysinfoDefPtr ret)
+virSysinfoParseSystem(char *base, virSysinfoDefPtr ret)
{
char *cur, *eol;
@@ -222,10 +222,10 @@ no_memory:
}
static char *
-parseProcessorInfo(char *base, virSysinfoDefPtr ret)
+virSysinfoParseProcessor(char *base, virSysinfoDefPtr ret)
{
char *cur, *eol, *tmp_base;
- virProcessorinfoDefPtr processor;
+ virSysinfoProcessorDefPtr processor;
while((tmp_base = strstr(base, "Processor Information")) != NULL) {
base = tmp_base;
@@ -323,10 +323,10 @@ no_memory:
}
static char *
-parseMemoryDeviceInfo(char *base, virSysinfoDefPtr ret)
+virSysinfoParseMemory(char *base, virSysinfoDefPtr ret)
{
char *cur, *eol, *tmp_base;
- virMemoryDeviceinfoDefPtr memory;
+ virSysinfoMemoryDefPtr memory;
while ((tmp_base = strstr(base, "Memory Device")) != NULL) {
base = tmp_base;
@@ -452,20 +452,20 @@ virSysinfoRead(void) {
base = outbuf;
- if ((base = parseBIOSInfo(base, ret)) == NULL)
+ if ((base = virSysinfoParseBIOS(base, ret)) == NULL)
goto no_memory;
- if ((base = parseSystemInfo(base, ret)) == NULL)
+ if ((base = virSysinfoParseSystem(base, ret)) == NULL)
goto no_memory;
ret->nprocessor = 0;
ret->processor = NULL;
- if ((base = parseProcessorInfo(base, ret)) == NULL)
+ if ((base = virSysinfoParseProcessor(base, ret)) == NULL)
goto no_memory;
ret->nmemory = 0;
ret->memory = NULL;
- if ((base = parseMemoryDeviceInfo(base, ret)) == NULL)
+ if ((base = virSysinfoParseMemory(base, ret)) == NULL)
goto no_memory;
cleanup:
@@ -484,7 +484,8 @@ no_memory:
#endif /* !WIN32 */
static void
-BIOSInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+virSysinfoBIOSFormat(virSysinfoDefPtr def, const char *prefix,
+ virBufferPtr buf)
{
int len = strlen(prefix);
@@ -522,7 +523,8 @@ BIOSInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
}
static void
-SystemInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+virSysinfoSystemFormat(virSysinfoDefPtr def, const char *prefix,
+ virBufferPtr buf)
{
int len = strlen(prefix);
@@ -580,11 +582,12 @@ SystemInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
}
static void
-ProcessorInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+virSysinfoProcessorFormat(virSysinfoDefPtr def, const char *prefix,
+ virBufferPtr buf)
{
int i;
int len = strlen(prefix);
- virProcessorinfoDefPtr processor;
+ virSysinfoProcessorDefPtr processor;
for (i = 0; i < def->nprocessor; i++) {
processor = &def->processor[i];
@@ -675,11 +678,12 @@ ProcessorInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
}
static void
-MemoryDeviceInfoFormat(virSysinfoDefPtr def, const char *prefix, virBufferPtr buf)
+virSysinfoMemoryFormat(virSysinfoDefPtr def, const char *prefix,
+ virBufferPtr buf)
{
int i;
int len = strlen(prefix);
- virMemoryDeviceinfoDefPtr memory;
+ virSysinfoMemoryDefPtr memory;
for (i = 0; i < def->nmemory; i++) {
memory = &def->memory[i];
@@ -785,10 +789,10 @@ virSysinfoFormat(virSysinfoDefPtr def, const char *prefix)
virBufferAsprintf(&buf, "%s<sysinfo type='%s'>\n", prefix, type);
- BIOSInfoFormat(def, prefix, &buf);
- SystemInfoFormat(def, prefix, &buf);
- ProcessorInfoFormat(def, prefix, &buf);
- MemoryDeviceInfoFormat(def, prefix, &buf);
+ virSysinfoBIOSFormat(def, prefix, &buf);
+ virSysinfoSystemFormat(def, prefix, &buf);
+ virSysinfoProcessorFormat(def, prefix, &buf);
+ virSysinfoMemoryFormat(def, prefix, &buf);
virBufferAsprintf(&buf, "%s</sysinfo>\n", prefix);
diff --git a/src/util/sysinfo.h b/src/util/sysinfo.h
index a15c5ac..86fd20f 100644
--- a/src/util/sysinfo.h
+++ b/src/util/sysinfo.h
@@ -33,9 +33,9 @@ enum virSysinfoType {
VIR_SYSINFO_LAST
};
-typedef struct _virProcessorinfoDef virProcessorinfoDef;
-typedef virProcessorinfoDef *virProcessorinfoDefPtr;
-struct _virProcessorinfoDef {
+typedef struct _virSysinfoProcessorDef virSysinfoProcessorDef;
+typedef virSysinfoProcessorDef *virSysinfoProcessorDefPtr;
+struct _virSysinfoProcessorDef {
char *processor_socket_destination;
char *processor_type;
char *processor_family;
@@ -49,9 +49,9 @@ struct _virProcessorinfoDef {
char *processor_part_number;
};
-typedef struct _virMemoryDeviceinfoDef virMemoryDeviceinfoDef;
-typedef virMemoryDeviceinfoDef *virMemoryDeviceinfoDefPtr;
-struct _virMemoryDeviceinfoDef {
+typedef struct _virSysinfoMemoryDef virSysinfoMemoryDef;
+typedef virSysinfoMemoryDef *virSysinfoMemoryDefPtr;
+struct _virSysinfoMemoryDef {
char *memory_size;
char *memory_form_factor;
char *memory_locator;
@@ -83,10 +83,10 @@ struct _virSysinfoDef {
char *system_family;
size_t nprocessor;
- virProcessorinfoDefPtr processor;
+ virSysinfoProcessorDefPtr processor;
size_t nmemory;
- virMemoryDeviceinfoDefPtr memory;
+ virSysinfoMemoryDefPtr memory;
};
virSysinfoDefPtr virSysinfoRead(void);
--
1.7.1
--
Minoru Usui <usui(a)mxm.nes.nec.co.jp>
13 years, 9 months
[libvirt] sysinfo: fix lack of error check in virSysinfoFormat().
by Minoru Usui
Fix lack of error check in virSysinfoFormat().
Signed-off-by: Minoru Usui <usui(a)mxm.nes.nec.co.jp>
---
src/util/sysinfo.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/src/util/sysinfo.c b/src/util/sysinfo.c
index 31ebdc2..bff1cb8 100644
--- a/src/util/sysinfo.c
+++ b/src/util/sysinfo.c
@@ -796,6 +796,11 @@ virSysinfoFormat(virSysinfoDefPtr def, const char *prefix)
virBufferAsprintf(&buf, "%s</sysinfo>\n", prefix);
+ if (virBufferError(&buf)) {
+ virReportOOMError();
+ return NULL;
+ }
+
return virBufferContentAndReset(&buf);
}
--
1.7.1
--
Minoru Usui <usui(a)mxm.nes.nec.co.jp>
13 years, 9 months
[libvirt] [PATCH v2] tests: Partly fix networkxml2argvtest being configure result dependent
by Matthias Bolte
Convert networkDnsmasqLeaseFileName to a replaceable function pointer
that allow the testsuite to use a version of that function that is not
depending on configure --localstatedir.
This fixes 5 of 6 test failures, when configure --localstatedir isn't
set to /var.
---
The last failure is related to networkBuildDhcpDaemonCommandLine
trying to indirectly write dnsmasq config files to disk. This needs
a larger rewrite to separate the config file writing out of
networkBuildDhcpDaemonCommandLine.
src/network/bridge_driver.c | 5 ++++-
src/network/bridge_driver.h | 5 +++++
tests/networkxml2argvtest.c | 13 +++++++++++++
3 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 1b11132..d009627 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -108,7 +108,7 @@ static void networkReloadIptablesRules(struct network_driver *driver);
static struct network_driver *driverState = NULL;
static char *
-networkDnsmasqLeaseFileName(const char *netname)
+networkDnsmasqLeaseFileNameDefault(const char *netname)
{
char *leasefile;
@@ -117,6 +117,9 @@ networkDnsmasqLeaseFileName(const char *netname)
return leasefile;
}
+networkDnsmasqLeaseFileNameFunc networkDnsmasqLeaseFileName =
+ networkDnsmasqLeaseFileNameDefault;
+
static char *
networkRadvdPidfileBasename(const char *netname)
{
diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
index 8d82b67..a106e3d 100644
--- a/src/network/bridge_driver.h
+++ b/src/network/bridge_driver.h
@@ -34,4 +34,9 @@
int networkRegister(void);
int networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, virCommandPtr *cmdout, char *pidfile);
+typedef char *(*networkDnsmasqLeaseFileNameFunc)(const char *netname);
+
+/* this allows the testsuite to replace the lease filename resolver function */
+extern networkDnsmasqLeaseFileNameFunc networkDnsmasqLeaseFileName;
+
#endif /* __VIR_NETWORK__DRIVER_H */
diff --git a/tests/networkxml2argvtest.c b/tests/networkxml2argvtest.c
index 16d57a9..62de191 100644
--- a/tests/networkxml2argvtest.c
+++ b/tests/networkxml2argvtest.c
@@ -85,11 +85,24 @@ cleanup:
return result;
}
+static char *
+testDnsmasqLeaseFileName(const char *netname)
+{
+ char *leasefile;
+
+ virAsprintf(&leasefile, "/var/lib/libvirt/dnsmasq/%s.leases",
+ netname);
+
+ return leasefile;
+}
+
static int
mymain(void)
{
int ret = 0;
+ networkDnsmasqLeaseFileName = testDnsmasqLeaseFileName;
+
#define DO_TEST(name) \
if (virtTestRun("Network XML-2-Argv " name, \
1, testCompareXMLToArgvHelper, (name)) < 0) \
--
1.7.0.4
13 years, 9 months
[libvirt] [PATCH] qemu: Remove bogus error codes for NUMA memory tuning
by Osier Yang
This is no code between virSaveLastError and virGetLastError will
set an error, remove the bogus codes.
---
src/qemu/qemu_process.c | 33 ---------------------------------
1 files changed, 0 insertions(+), 33 deletions(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index bb83be0..6c2492a 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -1251,8 +1251,6 @@ static int
qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm)
{
nodemask_t mask;
- virErrorPtr orig_err = NULL;
- virErrorPtr err = NULL;
int mode = -1;
int node = -1;
int ret = -1;
@@ -1291,23 +1289,12 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm)
}
}
- orig_err = virSaveLastError();
mode = vm->def->numatune.memory.mode;
if (mode == VIR_DOMAIN_NUMATUNE_MEM_STRICT) {
numa_set_bind_policy(1);
numa_set_membind(&mask);
numa_set_bind_policy(0);
-
- err = virGetLastError();
- if ((err && (err->code != orig_err->code)) ||
- (err && !orig_err)) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to bind memory to specified nodeset: %s"),
- err ? err->message : _("unknown error"));
- virResetLastError();
- goto cleanup;
- }
} else if (mode == VIR_DOMAIN_NUMATUNE_MEM_PREFERRED) {
int nnodes = 0;
for (i = 0; i < NUMA_NUM_NODES; i++) {
@@ -1326,28 +1313,8 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm)
numa_set_bind_policy(0);
numa_set_preferred(node);
-
- err = virGetLastError();
- if ((err && (err->code != orig_err->code)) ||
- (err && !orig_err)) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to set memory policy as preferred to specified "
- "node: %s"), err ? err->message : _("unknown error"));
- virResetLastError();
- goto cleanup;
- }
} else if (mode == VIR_DOMAIN_NUMATUNE_MEM_INTERLEAVE) {
numa_set_interleave_mask(&mask);
-
- err = virGetLastError();
- if ((err && (err->code != orig_err->code)) ||
- (err && !orig_err)) {
- qemuReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to interleave memory to specified nodeset: %s"),
- err ? err->message : _("unknown error"));
- virResetLastError();
- goto cleanup;
- }
} else {
/* XXX: Shouldn't go here, as we already do checking when
* parsing domain XML.
--
1.7.4
13 years, 9 months
[libvirt] [PATCH] network: fix indentation in networkBuildDnsmasqArgv
by Laine Stump
This block was inadvertently added with the wrong indentation.
---
src/network/bridge_driver.c | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 1b11132..f15a7a6 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -614,14 +614,13 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network,
if (ipdef->nranges || ipdef->nhosts)
virCommandAddArg(cmd, "--dhcp-no-override");
- if ((dctx = networkSaveDnsmasqHostsfile(ipdef, network->def->dns, network->def->name, false))) {
- if (dctx->hostsfile->nhosts)
- virCommandAddArgPair(cmd, "--dhcp-hostsfile",
- dctx->hostsfile->path);
- if (dctx->addnhostsfile->nhosts)
- virCommandAddArgPair(cmd, "--addn-hosts",
- dctx->addnhostsfile->path);
-
+ if ((dctx = networkSaveDnsmasqHostsfile(ipdef, network->def->dns, network->def->name, false))) {
+ if (dctx->hostsfile->nhosts)
+ virCommandAddArgPair(cmd, "--dhcp-hostsfile",
+ dctx->hostsfile->path);
+ if (dctx->addnhostsfile->nhosts)
+ virCommandAddArgPair(cmd, "--addn-hosts",
+ dctx->addnhostsfile->path);
dnsmasqContextFree(dctx);
}
--
1.7.3.4
13 years, 9 months