Some clients take the advice to poll virDomainGetBlockJobInfo rather than wait for the ready event. In some cases qemu can get to 100% and still not reach the synchronised phase. Since we are dealing with a computer interacting, the error that the job can't be finalized yet is not handled very well by those specific implementations. Our docs now correctly state to use the event. We already munge the output for the start of the job, so we can do it even here. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_driver.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 26edbf799f..cf500507da 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17477,6 +17477,14 @@ qemuBlockJobInfoTranslate(qemuMonitorBlockJobInfoPtr rawInfo, } } + /* If qemu reports that it's not ready yet don't make the job go to + * cur == end as some apps wrote code polling this instead of waiting for + * the ready event */ + if (rawInfo->ready == 0 && + info->cur == info->end && + info->cur > 0) + info->cur -= 1; + info->type = rawInfo->type; if (info->type == VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT && disk->mirrorJob == VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT) -- 2.20.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list