[...]
> 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