summaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2018-03-10 03:27:36 -0500
committerKevin Wolf <kwolf@redhat.com>2018-03-19 12:01:24 +0100
commit75f710599f2c35bad1a724d0243f372d05cc07ed (patch)
treec87bc75d880f7916bc70586bb3ffd80cf4abebcd /qapi
parent3925cd3bc7bdc82b7889fd97e7cad52dfee5e8a6 (diff)
downloadqemu-75f710599f2c35bad1a724d0243f372d05cc07ed.tar.gz
blockjobs: add block_job_dismiss
For jobs that have reached their CONCLUDED state, prior to having their last reference put down (meaning jobs that have completed successfully, unsuccessfully, or have been canceled), allow the user to dismiss the job's lingering status report via block-job-dismiss. This gives management APIs the chance to conclusively determine if a job failed or succeeded, even if the event broadcast was missed. Note: block_job_do_dismiss and block_job_decommission happen to do exactly the same thing, but they're called from different semantic contexts, so both aliases are kept to improve readability. Note 2: Don't worry about the 0x04 flag definition for AUTO_DISMISS, she has a friend coming in a future patch to fill the hole where 0x02 is. Verbs: Dismiss: operates on CONCLUDED jobs only. Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/block-core.json24
1 files changed, 23 insertions, 1 deletions
diff --git a/qapi/block-core.json b/qapi/block-core.json
index ef18abe09a..afb2e63fa6 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -973,10 +973,12 @@
#
# @complete: see @block-job-complete
#
+# @dismiss: see @block-job-dismiss
+#
# Since: 2.12
##
{ 'enum': 'BlockJobVerb',
- 'data': ['cancel', 'pause', 'resume', 'set-speed', 'complete' ] }
+ 'data': ['cancel', 'pause', 'resume', 'set-speed', 'complete', 'dismiss' ] }
##
# @BlockJobStatus:
@@ -2247,6 +2249,26 @@
{ 'command': 'block-job-complete', 'data': { 'device': 'str' } }
##
+# @block-job-dismiss:
+#
+# For jobs that have already concluded, remove them from the block-job-query
+# list. This command only needs to be run for jobs which were started with
+# QEMU 2.12+ job lifetime management semantics.
+#
+# This command will refuse to operate on any job that has not yet reached
+# its terminal state, BLOCK_JOB_STATUS_CONCLUDED. For jobs that make use of
+# BLOCK_JOB_READY event, block-job-cancel or block-job-complete will still need
+# to be used as appropriate.
+#
+# @id: The job identifier.
+#
+# Returns: Nothing on success
+#
+# Since: 2.12
+##
+{ 'command': 'block-job-dismiss', 'data': { 'id': 'str' } }
+
+##
# @BlockdevDiscardOptions:
#
# Determines how to handle discard requests.