[...] >> if (VIR_ALLOC_N(info_ret, niothreads) < 0) >> - goto endjob; >> + goto cleanup; >> >> for (i = 0; i < niothreads; i++) { >> virBitmapPtr map = NULL; >> >> if (VIR_ALLOC(info_ret[i]) < 0) >> - goto endjob; >> + goto cleanup; >> info_ret[i]->iothread_id = iothreads[i]->iothread_id; >> >> if (!(map = virProcessGetAffinity(iothreads[i]->thread_id))) >> - goto endjob; >> + goto cleanup; > > I don't think this is a good idea. GetAffinity should be inside job too. > SetAffinity call inside PinIOThread is inside one. > Probably doesn't hurt us right now since the domain object is locked > here, but regardless I think it should be inside a job. > > The split into two functions looks okay. > OK - I'll move the job logic back inside here and just have the Mon logic do the magic fetch. I was attempting to use a mix of the Block and Interface logic and missed the detail regarding it being run in a job 0-). Thanks! John >> >> if (virBitmapToData(map, &info_ret[i]->cpumap, >> &info_ret[i]->cpumaplen) < 0) { >> virBitmapFree(map); >> - goto endjob; >> + goto cleanup; >> } >> virBitmapFree(map); >> } >> >> - *info = info_ret; >> - info_ret = NULL; >> + VIR_STEAL_PTR(*info, info_ret); >> ret = niothreads; >> >> - endjob: >> - qemuDomainObjEndJob(driver, vm); >> - >> cleanup: >> if (info_ret) { >> for (i = 0; i < niothreads; i++) >> > > Michal > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list