From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49528) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wfic7-0001vF-0v for qemu-devel@nongnu.org; Thu, 01 May 2014 00:29:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wfibx-0002PV-VI for qemu-devel@nongnu.org; Thu, 01 May 2014 00:28:50 -0400 Received: from mail-ie0-x231.google.com ([2607:f8b0:4001:c03::231]:63810) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wfibx-0002PQ-NG for qemu-devel@nongnu.org; Thu, 01 May 2014 00:28:41 -0400 Received: by mail-ie0-f177.google.com with SMTP id rp18so2968984iec.8 for ; Wed, 30 Apr 2014 21:28:41 -0700 (PDT) From: Wenchao Xia Date: Wed, 30 Apr 2014 21:26:55 -0700 Message-Id: <1398918422-3019-22-git-send-email-wenchaoqemu@gmail.com> In-Reply-To: <1398918422-3019-1-git-send-email-wenchaoqemu@gmail.com> References: <1398918422-3019-1-git-send-email-wenchaoqemu@gmail.com> Subject: [Qemu-devel] [PATCH V5 21/28] qapi event: convert other BLOCK_JOB events List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mdroth@linux.vnet.ibm.com, armbru@redhat.com, Wenchao Xia , lcapitulino@redhat.com BLOCK_JOB_COMPLETED, BLOCK_JOB_CANCELLED, BLOCK_JOB_READY are converted. Signed-off-by: Wenchao Xia --- block/mirror.c | 2 +- blockdev.c | 12 +++++------- blockjob.c | 36 ++++++++++++++++++++---------------- include/block/blockjob.h | 17 +++++++++++++---- 4 files changed, 39 insertions(+), 28 deletions(-) diff --git a/block/mirror.c b/block/mirror.c index 8a1a359..9cacc15 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -424,7 +424,7 @@ static void coroutine_fn mirror_run(void *opaque) */ s->common.offset = end * BDRV_SECTOR_SIZE; if (!s->synced) { - block_job_ready(&s->common); + block_job_event_ready(&s->common); s->synced = true; } diff --git a/blockdev.c b/blockdev.c index 7810e9f..bb2c0e0 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1809,23 +1809,21 @@ void qmp_block_resize(bool has_device, const char *device, static void block_job_cb(void *opaque, int ret) { BlockDriverState *bs = opaque; - QObject *obj; + const char *msg = NULL; trace_block_job_cb(bs, bs->job, ret); assert(bs->job); - obj = qobject_from_block_job(bs->job); + if (ret < 0) { - QDict *dict = qobject_to_qdict(obj); - qdict_put(dict, "error", qstring_from_str(strerror(-ret))); + msg = strerror(-ret); } if (block_job_is_cancelled(bs->job)) { - monitor_protocol_event(QEVENT_BLOCK_JOB_CANCELLED, obj); + block_job_event_cancelled(bs->job); } else { - monitor_protocol_event(QEVENT_BLOCK_JOB_COMPLETED, obj); + block_job_event_completed(bs->job, msg); } - qobject_decref(obj); bdrv_put_ref_bh_schedule(bs); } diff --git a/blockjob.c b/blockjob.c index 5c2ae1b..8c90fd3 100644 --- a/blockjob.c +++ b/blockjob.c @@ -26,7 +26,6 @@ #include "config-host.h" #include "qemu-common.h" #include "trace.h" -#include "monitor/monitor.h" #include "block/block.h" #include "block/blockjob.h" #include "block/block_int.h" @@ -229,26 +228,31 @@ static void block_job_iostatus_set_err(BlockJob *job, int error) } } +void block_job_event_cancelled(BlockJob *job) +{ + qapi_event_send_block_job_cancelled(job->driver->job_type, + bdrv_get_device_name(job->bs), + job->len, + job->offset, + job->speed, + NULL); +} -QObject *qobject_from_block_job(BlockJob *job) +void block_job_event_completed(BlockJob *job, const char *msg) { - return qobject_from_jsonf("{ 'type': %s," - "'device': %s," - "'len': %" PRId64 "," - "'offset': %" PRId64 "," - "'speed': %" PRId64 " }", - BlockJobType_lookup[job->driver->job_type], - bdrv_get_device_name(job->bs), - job->len, - job->offset, - job->speed); + qapi_event_send_block_job_completed(job->driver->job_type, + bdrv_get_device_name(job->bs), + job->len, + job->offset, + job->speed, + !!msg, + msg, + NULL); } -void block_job_ready(BlockJob *job) +void block_job_event_ready(BlockJob *job) { - QObject *data = qobject_from_block_job(job); - monitor_protocol_event(QEVENT_BLOCK_JOB_READY, data); - qobject_decref(data); + qapi_event_send_block_job_ready(bdrv_get_device_name(job->bs), NULL); } BlockErrorAction block_job_error_action(BlockJob *job, BlockDriverState *bs, diff --git a/include/block/blockjob.h b/include/block/blockjob.h index d76de62..0fc5c93 100644 --- a/include/block/blockjob.h +++ b/include/block/blockjob.h @@ -214,12 +214,21 @@ void block_job_pause(BlockJob *job); void block_job_resume(BlockJob *job); /** - * qobject_from_block_job: + * block_job_event_cancle: * @job: The job whose information is requested. * - * Return a QDict corresponding to @job's query-block-jobs entry. + * Send a BLOCK_JOB_CANCELLED event for the specified job. */ -QObject *qobject_from_block_job(BlockJob *job); +void block_job_event_cancelled(BlockJob *job); + +/** + * block_job_ready: + * @job: The job which is now ready to complete. + * @msg: Error message. Only present on failure. + * + * Send a BLOCK_JOB_COMPLETED event for the specified job. + */ +void block_job_event_completed(BlockJob *job, const char *msg); /** * block_job_ready: @@ -227,7 +236,7 @@ QObject *qobject_from_block_job(BlockJob *job); * * Send a BLOCK_JOB_READY event for the specified job. */ -void block_job_ready(BlockJob *job); +void block_job_event_ready(BlockJob *job); /** * block_job_is_paused: -- 1.7.1