From 01692bb167f7ab81213921ba1116d46a4651ef0e Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Tue, 29 Mar 2011 21:43:41 +0800 Subject: [PATCH] cputune: Support cputune for xend driver Not sure if it's the correct way to add cputune xml for xend driver, and besides, seems "xm driver" and "xen hypervisor" also support vcpu affinity, do we need to add support for them too? --- src/xen/xend_internal.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index bfaed6515b..8859373fcc 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -2233,11 +2233,12 @@ xenDaemonDomainSetVcpusFlags(virDomainPtr domain, unsigned int vcpus, */ int xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu, - unsigned char *cpumap, int maplen) + unsigned char *cpumap, int maplen) { char buf[VIR_UUID_BUFLEN], mapstr[sizeof(cpumap_t) * 64]; - int i, j; + int i, j, ret; xenUnifiedPrivatePtr priv; + virDomainDefPtr def = NULL; if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL) || (cpumap == NULL) || (maplen < 1) || (maplen > (int)sizeof(cpumap_t))) { @@ -2265,8 +2266,29 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu, mapstr[strlen(mapstr) - 1] = 0; snprintf(buf, sizeof(buf), "%d", vcpu); - return(xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf, - "cpumap", mapstr, NULL)); + + ret = xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf, + "cpumap", mapstr, NULL); + + if (!(def = xenDaemonDomainFetch(domain->conn, + domain->id, + domain->name, + NULL))) + goto cleanup; + + if (ret == 0) { + if (virDomainVcpupinAdd(def, cpumap, maplen, vcpu) < 0) { + virXendError(VIR_ERR_INTERNAL_ERROR, + "%s", _("failed to add vcpupin xml entry")); + return (-1); + } + } + + return ret; + +cleanup: + virDomainDefFree(def); + return -1; } /** -- GitLab