From: Max Reitz Date: Fri, 24 Oct 2014 13:57:34 +0000 (+0200) Subject: blockjob: Add "ready" field X-Git-Tag: v2.2.0-rc0~12^2~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef6dbf1e46e;p=thirdparty%2Fqemu.git blockjob: Add "ready" field When a block job signals readiness, this is currently reported only through QMP. If qemu wants to use block jobs for internal tasks, there needs to be another way to correctly detect when a block job may be completed. For this reason, introduce a bool "ready" which is set when the block job may be completed. Signed-off-by: Max Reitz Reviewed-by: Eric Blake Reviewed-by: Kevin Wolf Message-id: 1414159063-25977-6-git-send-email-mreitz@redhat.com Signed-off-by: Stefan Hajnoczi --- diff --git a/blockjob.c b/blockjob.c index a7d57e3d330..448b9ce1136 100644 --- a/blockjob.c +++ b/blockjob.c @@ -261,6 +261,7 @@ BlockJobInfo *block_job_query(BlockJob *job) info->offset = job->offset; info->speed = job->speed; info->io_status = job->iostatus; + info->ready = job->ready; return info; } @@ -296,6 +297,8 @@ void block_job_event_completed(BlockJob *job, const char *msg) void block_job_event_ready(BlockJob *job) { + job->ready = true; + qapi_event_send_block_job_ready(job->driver->job_type, bdrv_get_device_name(job->bs), job->len, diff --git a/include/block/blockjob.h b/include/block/blockjob.h index ab11a0f622a..9694f130b00 100644 --- a/include/block/blockjob.h +++ b/include/block/blockjob.h @@ -91,6 +91,11 @@ struct BlockJob { */ bool busy; + /** + * Set to true when the job is ready to be completed. + */ + bool ready; + /** Status that is published by the query-block-jobs QMP API */ BlockDeviceIoStatus iostatus; diff --git a/qapi/block-core.json b/qapi/block-core.json index 8f7089e0540..77a0cfbd82b 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -514,12 +514,14 @@ # # @io-status: the status of the job (since 1.3) # +# @ready: true if the job may be completed (since 2.2) +# # Since: 1.1 ## { 'type': 'BlockJobInfo', 'data': {'type': 'str', 'device': 'str', 'len': 'int', 'offset': 'int', 'busy': 'bool', 'paused': 'bool', 'speed': 'int', - 'io-status': 'BlockDeviceIoStatus'} } + 'io-status': 'BlockDeviceIoStatus', 'ready': 'bool'} } ## # @query-block-jobs: