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.