[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v2 14/15] blockjob: Add 'id' parameter to 'block-job
From: |
Alberto Garcia |
Subject: |
[Qemu-block] [PATCH v2 14/15] blockjob: Add 'id' parameter to 'block-job-complete' |
Date: |
Wed, 22 Jun 2016 15:25:11 +0300 |
This patch allows the 'block-job-complete' command to identify the
job by either its ID or its device name. The latter becomes now
optional since the ID alone is enough to identify the job.
The HMP 'block_job_complete' command remains unchanged.
Signed-off-by: Alberto Garcia <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
blockdev.c | 7 +++++--
hmp.c | 2 +-
qapi/block-core.json | 7 ++++++-
qmp-commands.hx | 2 +-
4 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index 5d8d405..9bb1033 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3842,10 +3842,13 @@ void qmp_block_job_resume(bool has_id, const char *id,
aio_context_release(aio_context);
}
-void qmp_block_job_complete(const char *device, Error **errp)
+void qmp_block_job_complete(bool has_id, const char *id,
+ bool has_device, const char *device, Error **errp)
{
AioContext *aio_context;
- BlockJob *job = find_block_job(NULL, device, &aio_context, errp);
+ BlockJob *job = find_block_job(has_id ? id : NULL,
+ has_device ? device : NULL,
+ &aio_context, errp);
if (!job) {
return;
diff --git a/hmp.c b/hmp.c
index 8846673..c100ad8 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1539,7 +1539,7 @@ void hmp_block_job_complete(Monitor *mon, const QDict
*qdict)
Error *error = NULL;
const char *device = qdict_get_str(qdict, "device");
- qmp_block_job_complete(device, &error);
+ qmp_block_job_complete(false, NULL, true, device, &error);
hmp_handle_error(mon, &error);
}
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 0efa73d..f15e62f 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1593,6 +1593,11 @@
#
# A cancelled or paused job cannot be completed.
#
+# The job must be identified with the @id or @device parameters, but
+# only one of them must be set.
+#
+# @id: #optional the job identifier. (Since 2.7)
+#
# @device: the device name
#
# Returns: Nothing on success
@@ -1600,7 +1605,7 @@
#
# Since: 1.3
##
-{ 'command': 'block-job-complete', 'data': { 'device': 'str' } }
+{ 'command': 'block-job-complete', 'data': { '*id': 'str', '*device': 'str' } }
##
# @BlockdevDiscardOptions
diff --git a/qmp-commands.hx b/qmp-commands.hx
index b2020f3..df43d18 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -1332,7 +1332,7 @@ EQMP
},
{
.name = "block-job-complete",
- .args_type = "device:B",
+ .args_type = "id:s?,device:B?",
.mhandler.cmd_new = qmp_marshal_block_job_complete,
},
{
--
2.8.1
- [Qemu-block] [PATCH v2 06/15] mirror: Add 'job-id' parameter to 'blockdev-mirror' and 'drive-mirror', (continued)
[Qemu-block] [PATCH v2 09/15] commit: Add 'job-id' parameter to 'block-commit', Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 14/15] blockjob: Add 'id' parameter to 'block-job-complete',
Alberto Garcia <=
[Qemu-block] [PATCH v2 04/15] block: Simplify find_block_job() and make it accept a job ID, Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 13/15] blockjob: Add 'id' parameter to 'block-job-resume', Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 12/15] blockjob: Add 'id' parameter to 'block-job-pause', Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 15/15] blockjob: Add 'id' field to 'BlockJobInfo' and all BLOCK_JOB_* events, Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 11/15] blockjob: Add 'id' parameter to 'block-job-cancel', Alberto Garcia, 2016/06/22
[Qemu-block] [PATCH v2 10/15] blockjob: Add 'id' parameter to 'block-job-set-speed', Alberto Garcia, 2016/06/22