On Thu, Dec 03, 2009 at 12:48:47AM +0100, Matthias Bolte wrote:
2009/11/26 Daniel P. Berrange <berrange(a)redhat.com>:
> The code to start CPUs executing has nothing todo with CPU
> affinity masks, so pull it out of the qemudInitCpuAffinity()
> method and up into qemudStartVMDaemon()
>
> * src/qemu/qemu_driver.c: Pull code to start CPUs executing out
> of qemudInitCpuAffinity()
> ---
> src/qemu/qemu_driver.c | 37 +++++++++++++++++--------------------
> 1 files changed, 17 insertions(+), 20 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2907976..b1f5894 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -1370,13 +1370,10 @@ qemuDetectVcpuPIDs(virConnectPtr conn,
> }
>
> static int
> -qemudInitCpus(virConnectPtr conn,
> - struct qemud_driver *driver,
> - virDomainObjPtr vm,
> - const char *migrateFrom) {
> +qemudInitCpuAffinity(virConnectPtr conn,
> + virDomainObjPtr vm) {
> int i, hostcpus, maxcpu = QEMUD_CPUMASK_LEN;
> virNodeInfo nodeinfo;
> - qemuDomainObjPrivatePtr priv = vm->privateData;
> unsigned char *cpumap;
> int cpumaplen;
>
> @@ -1421,20 +1418,6 @@ qemudInitCpus(virConnectPtr conn,
> }
> VIR_FREE(cpumap);
>
> - /* XXX This resume doesn't really belong here. Move it up to caller */
> - if (migrateFrom == NULL) {
> - /* Allow the CPUS to start executing */
> - qemuDomainObjEnterMonitorWithDriver(driver, vm);
> - if (qemuMonitorStartCPUs(priv->mon, conn) < 0) {
> - if (virGetLastError() == NULL)
> - qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> - "%s", _("resume operation
failed"));
> - qemuDomainObjExitMonitorWithDriver(driver, vm);
> - return -1;
> - }
> - qemuDomainObjExitMonitorWithDriver(driver, vm);
> - }
> -
> return 0;
> }
>
> @@ -2324,7 +2307,7 @@ static int qemudStartVMDaemon(virConnectPtr conn,
> if (qemuDetectVcpuPIDs(conn, driver, vm) < 0)
> goto abort;
>
> - if (qemudInitCpus(conn, driver, vm, migrateFrom) < 0)
> + if (qemudInitCpuAffinity(conn, vm) < 0)
> goto abort;
>
> if (qemuInitPasswords(driver, vm) < 0)
> @@ -2337,6 +2320,20 @@ static int qemudStartVMDaemon(virConnectPtr conn,
> }
> qemuDomainObjExitMonitorWithDriver(driver, vm);
Why do you exit the monitor here if you maybe just reenter it in the
following if-block? I would just merge the two enter/exit blocks and
put the final exit after the following if-block.
There's not really any particular reason for that - it just ended up
that way after re-factoring, so we might as well merge it
> + if (migrateFrom == NULL) {
> + /* Allow the CPUS to start executing */
> + qemuDomainObjEnterMonitorWithDriver(driver, vm);
> + if (qemuMonitorStartCPUs(priv->mon, conn) < 0) {
> + if (virGetLastError() == NULL)
> + qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> + "%s", _("resume operation
failed"));
> + qemuDomainObjExitMonitorWithDriver(driver, vm);
> + return -1;
goto abort instead of return -1.
Ah yes :-)
> + }
> + qemuDomainObjExitMonitorWithDriver(driver, vm);
> + }
> +
> +
> if (virDomainSaveStatus(conn, driver->stateDir, vm) < 0)
> goto abort;
>
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|