From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAvD9-0004dK-DQ for qemu-devel@nongnu.org; Thu, 09 Jun 2016 04:21:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAvD0-0004f3-Q1 for qemu-devel@nongnu.org; Thu, 09 Jun 2016 04:21:07 -0400 From: Alberto Garcia Date: Thu, 9 Jun 2016 11:20:05 +0300 Message-Id: Subject: [Qemu-devel] [PATCH 00/15] Add an 'id' field to block jobs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, Max Reitz , Kevin Wolf , Eric Blake , Jeff Cody , Alberto Garcia Hello all, Block jobs are currently identified by the name of the block backend of the BDS where the job was started. This series adds a new 'id' field that is specific to the block job and guaranteed to be unique and always present. The patches can be summarized as follows: - 1: Fix the prototype of stream_start(), that is going to be touched by a later patch in the series. - 2-5: Split BlockJob's 'id' field into 'id' and 'device' and adjust the internal APIs to allow using the job ID. - 6-9: Add parameters to allow setting the job ID to all QMP commands that create block jobs (block-stream, block-commit, ...) - 10-14: Add parameters to allow using the job ID to all QMP command that manipulate block jobs (cancel, pause, complete, ...). - 15: Expose the ID field in BlockJobInfo and all BLOCK_JOB_* events. Things to do: - Add new tests specific to job IDs. - Add job ID support to HMP commands. The series applies on top of Max's block branch (commit 3cc2f35a59) but it should work on master as well. Questions, comments, etc, are welcome. Thanks! Berto Alberto Garcia (15): stream: Fix prototype of stream_start() blockjob: Decouple the ID from the device name in the BlockJob struct blockjob: Add block_job_get() block: Simplify find_block_job() and make it accept a job ID blockjob: Add 'job_id' parameter to block_job_create() mirror: Add 'job-id' parameter to 'blockdev-mirror' and 'drive-mirror' backup: Add 'job-id' parameter to 'blockdev-backup' and 'drive-backup' stream: Add 'job-id' parameter to 'block-stream' stream: Add 'job-id' parameter to 'block-commit' blockjob: Add 'id' parameter to 'block-job-set-speed' blockjob: Add 'id' parameter to 'block-job-cancel' blockjob: Add 'id' parameter to 'block-job-pause' blockjob: Add 'id' parameter to 'block-job-resume' blockjob: Add 'id' parameter to 'block-job-complete' blockjob: Add 'id' field to 'BlockJobInfo' and all BLOCK_JOB_* events block/backup.c | 9 +-- block/commit.c | 7 +- block/mirror.c | 18 ++--- block/stream.c | 12 ++-- blockdev.c | 164 ++++++++++++++++++++++++++------------------- blockjob.c | 43 ++++++++++-- docs/qmp-events.txt | 4 ++ hmp.c | 16 ++--- include/block/block_int.h | 47 ++++++++----- include/block/blockjob.h | 30 +++++++-- include/qemu/id.h | 1 + qapi/block-core.json | 91 +++++++++++++++++++------ qemu-img.c | 2 +- qmp-commands.hx | 32 +++++---- tests/qemu-iotests/095 | 2 +- tests/qemu-iotests/095.out | 2 +- tests/qemu-iotests/124 | 3 +- tests/qemu-iotests/141 | 6 +- tests/qemu-iotests/141.out | 14 ++-- tests/qemu-iotests/144 | 1 + tests/qemu-iotests/144.out | 4 +- tests/test-blockjob-txn.c | 2 +- util/id.c | 1 + 23 files changed, 334 insertions(+), 177 deletions(-) -- 2.8.1