Libvirt Version: 0.9.8

Hi:
   I added a new api for qemu_driver. and both added libvirt.c and remote.
I tested it and it worked well. the function of this new api was add a new 
field in xml config of domain. (I added it like qemudDomainSetMemoryFlags)at 
the same time, I added a new member to struct virDomainDef. then I tested xml 
config converted to virDomaindef and virDomainDef converted to xml config both 
well(just tested this new api). But there was a problem, if I change the memory 
size or cpu number then apply it with virtManager. the xml config was changed. 
but there is no field in the xml what I added. I guest the virDomainDef member 
in virDomainObjPtr wasn't update. 

I have no idea, can you give me some ideas? thanks!

here is my code in qemu_driver.c:

static int qemudDomainSetCustomOptions(virDomainPtr dom, char *opt)
{
    struct qemud_driver *driver = dom->conn->privateData;
    virDomainObjPtr vm;
    virDomainDefPtr persistentDef = NULL; 
    int ret = -1;  

    qemuDriverLock(driver);
    vm = virDomainFindByUUID(&driver->domains, dom->uuid);
    qemuDriverUnlock(driver);

    if (!vm) {
        char uuidstr[VIR_UUID_STRING_BUFLEN];
        virUUIDFormat(dom->uuid, uuidstr);
        qemuReportError(VIR_ERR_NO_DOMAIN,
                _("no domain with matching uuid '%s'"), uuidstr);
            goto cleanup;
    }

    if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
        goto cleanup;

    if (!vm->persistent) {
        qemuReportError(VIR_ERR_OPERATION_INVALID, "%s",
            _("cannot change persistent config of a transient domain"));
        goto endjob;
    }
        
    if (!(persistentDef = virDomainObjGetPersistentDef(driver->caps, vm)))
        goto endjob;
                
    sa_assert(persistentDef);

    persistentDef->running_mode = opt;

    ret = virDomainSaveConfig(driver->configDir, persistentDef);

    ret = 0;
endjob:
    if (qemuDomainObjEndJob(driver, vm) == 0)
        vm = NULL;

cleanup:
    if (vm)
        virDomainObjUnlock(vm);
        return ret;
}




xuanmao_001
_______________________________________________
libvirt-users mailing list
libvirt-users@redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-users

Reply via email to