diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index c2146d29c0cebb7ed0b2137e998c10db85811f3e..83de02a15439444e8326a2a88b7ae7d76e806bd3 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -1837,7 +1837,7 @@ virshBlockJobWait(virshBlockJobWaitDataPtr data) unsigned int abort_flags = 0; int ret = -1; - virDomainBlockJobInfo info; + virDomainBlockJobInfo info, last; int result; if (!data) @@ -1860,6 +1860,8 @@ virshBlockJobWait(virshBlockJobWaitDataPtr data) return -1; } + last.cur = last.end = 0; + while (true) { pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask); result = virDomainGetBlockJobInfo(data->dom, data->dev, &info, 0); @@ -1891,9 +1893,10 @@ virshBlockJobWait(virshBlockJobWaitDataPtr data) goto cleanup; } - if (data->verbose) + if (data->verbose && (info.cur != last.cur || info.end != last.end)) virshPrintJobProgress(data->job_name, info.end - info.cur, info.end); + last = info; if (data->timeout && virTimeMillisNow(&curr) < 0) { vshSaveLibvirtError();