For jobs that have finished (either completed or canceled), allow the user to dismiss the job's status reports via block-job-cull.
Signed-off-by: John Snow <js...@redhat.com> --- block/trace-events | 1 + blockdev.c | 14 ++++++++++++++ qapi/block-core.json | 21 +++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/block/trace-events b/block/trace-events index 25dd5a3..cb64e91 100644 --- a/block/trace-events +++ b/block/trace-events @@ -46,6 +46,7 @@ qmp_block_job_cancel(void *job) "job %p" qmp_block_job_pause(void *job) "job %p" qmp_block_job_resume(void *job) "job %p" qmp_block_job_complete(void *job) "job %p" +qmp_block_job_cull(void *job) "job %p" qmp_block_stream(void *bs, void *job) "bs %p job %p" # block/file-win32.c diff --git a/blockdev.c b/blockdev.c index eeb4986..ee07bca 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3766,6 +3766,20 @@ void qmp_block_job_complete(const char *device, Error **errp) aio_context_release(aio_context); } +void qmp_block_job_cull(const char *device, Error **errp) +{ + AioContext *aio_context; + BlockJob *job = find_block_job(device, &aio_context, errp); + + if (!job) { + return; + } + + trace_qmp_block_job_cull(job); + block_job_cull(&job, errp); + aio_context_release(aio_context); +} + void qmp_change_backing_file(const char *device, const char *image_node_name, const char *backing_file, diff --git a/qapi/block-core.json b/qapi/block-core.json index a4f5e10..de322d1 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2161,6 +2161,27 @@ { 'command': 'block-job-complete', 'data': { 'device': 'str' } } ## +# @block-job-cull: +# +# For jobs that have already completed, remove them from the block-job-query +# list. This command only needs to be run for jobs which were started with the +# manual-cull=true option. +# +# This command will refuse to operate on any job that has not yet reached +# its terminal state. "cancel" or "complete" will still need to be used as +# appropriate. +# +# @device: The job identifier. This used to be a device name (hence +# the name of the parameter), but since QEMU 2.7 it can have +# other values. +# +# Returns: Nothing on success +# +# Since: 2.11 +## +{ 'command': 'block-job-cull', 'data': { 'device': 'str' } } + +## # @BlockdevDiscardOptions: # # Determines how to handle discard requests. -- 2.9.5