
On 03/25/2015 02:39 PM, Ján Tomko wrote:
Just format the bitmap via virBitmapFormat. --- tools/virsh-domain.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index afd92b1..cb9cb9d 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -6834,6 +6834,7 @@ cmdIOThreadInfo(vshControl *ctl, const vshCmd *cmd) size_t i; int maxcpu; unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT; + virBitmapPtr map = NULL;
VSH_EXCLUSIVE_OPTIONS_VAR(current, live); VSH_EXCLUSIVE_OPTIONS_VAR(current, config); @@ -6863,16 +6864,24 @@ cmdIOThreadInfo(vshControl *ctl, const vshCmd *cmd) _("IOThread ID"), _("CPU Affinity")); vshPrintExtra(ctl, "---------------------------------------------------\n"); for (i = 0; i < niothreads; i++) { + char *mapstr = NULL;
Considering the other discussion about Set/Add/Del IOThread and since you're modifying the code anyway... How about adding a check for: if (info[i].iothread_id == 0) continue; That way we can "prepare" for a configuration that may have "holes" on the delete and won't have some future issue with a 1.2.14 virsh receiving something unexpected from a 1.2.15 daemon. John
+ virBitmapFree(map); + map = virBitmapNewData(info[i]->cpumap, info[i]->cpumaplen); + if (!map) + goto cleanup; + + if (!(mapstr = virBitmapFormat(map))) + goto cleanup;
vshPrint(ctl, " %-15u ", info[i]->iothread_id); - ignore_value(vshPrintPinInfo(info[i]->cpumap, info[i]->cpumaplen, - maxcpu, 0)); + vshPrint(ctl, " %-15s ", mapstr); vshPrint(ctl, "\n"); virDomainIOThreadInfoFree(info[i]); } VIR_FREE(info);
cleanup: + virBitmapFree(map); virDomainFree(dom); return niothreads >= 0; }