2009/11/26 Daniel P. Berrange <berrange@xxxxxxxxxx>: > 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. > + 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. > + } > + qemuDomainObjExitMonitorWithDriver(driver, vm); > + } > + > + > if (virDomainSaveStatus(conn, driver->stateDir, vm) < 0) > goto abort; > Matthias -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list