On Wed, Aug 04, 2021 at 12:34:31 +0200, Kevin Wolf wrote: > We could in theory keep allowing redundant completion requests when the > completion mode doesn't conflict, but I don't see the point of that. I don't see either. Especially since ... > Unless libvirt can actually issue multiple completion requests (again, > this includes both (block-)job-complete and non-force block-job-cancel > for mirror) for the same block job - Peter, I hope it doesn't? ... the regular job completion code in libvirt which is meant for user interaction (qemuDomainBlockJobAbort) has the following interlock: if (job->state == QEMU_BLOCKJOB_STATE_ABORTING || job->state == QEMU_BLOCKJOB_STATE_PIVOTING) { virReportError(VIR_ERR_OPERATION_INVALID, _("block job on disk '%s' is still being ended"), disk->dst); goto endjob; } .. the other two uses of blockjobs are internal for handling migration with non shared storage and there we also issue exactly one cancel request and backup jobs were we too make sure to cancel it just once. As of such it's okay to forbid the case you are mentioning.