qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH v2 00/15] Add an 'id' field to block jobs


From: Alberto Garcia
Subject: [Qemu-block] [PATCH v2 00/15] Add an 'id' field to block jobs
Date: Wed, 22 Jun 2016 15:24:57 +0300

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.

Berto

v2:
- Rebased on top of the current master
- Patch 2
  - Now that job->id no longer holds the device name, replace
    "The active block job for device '%s' cannot be completed"
    with "The active block job '%s' cannot be completed"
    in mirror_complete() and block_job_complete().
- Patch 4
  - Keep using ERROR_CLASS_DEVICE_NOT_ACTIVE in find_block_job() and
    change error path. [Max]
- Patch 6
  - Fix merge conflicts after 274fcce.
- Patch 9
  - Fix subject in commit message [Max]
- Patch 15
  - Update iotests 109 and 156 [Max]

v1: https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg02438.html
- Initial release

git backport-diff against v1:

Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively

001/15:[----] [--] 'stream: Fix prototype of stream_start()'
002/15:[0009] [FC] 'blockjob: Decouple the ID from the device name in the 
BlockJob struct'
003/15:[----] [-C] 'blockjob: Add block_job_get()'
004/15:[0031] [FC] 'block: Simplify find_block_job() and make it accept a job 
ID'
005/15:[----] [-C] 'blockjob: Add 'job_id' parameter to block_job_create()'
006/15:[0003] [FC] 'mirror: Add 'job-id' parameter to 'blockdev-mirror' and 
'drive-mirror''
007/15:[----] [-C] 'backup: Add 'job-id' parameter to 'blockdev-backup' and 
'drive-backup''
008/15:[----] [--] 'stream: Add 'job-id' parameter to 'block-stream''
009/15:[down] 'commit: Add 'job-id' parameter to 'block-commit''
010/15:[----] [--] 'blockjob: Add 'id' parameter to 'block-job-set-speed''
011/15:[----] [--] 'blockjob: Add 'id' parameter to 'block-job-cancel''
012/15:[----] [--] 'blockjob: Add 'id' parameter to 'block-job-pause''
013/15:[----] [--] 'blockjob: Add 'id' parameter to 'block-job-resume''
014/15:[----] [--] 'blockjob: Add 'id' parameter to 'block-job-complete''
015/15:[0095] [FC] 'blockjob: Add 'id' field to 'BlockJobInfo' and all 
BLOCK_JOB_* events'

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'
  commit: 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             |  22 +++---
 block/stream.c             |  12 ++--
 blockdev.c                 | 175 +++++++++++++++++++++++++++------------------
 blockjob.c                 |  46 ++++++++++--
 docs/qmp-events.txt        |   4 ++
 hmp.c                      |  16 ++---
 include/block/block_int.h  |  47 +++++++-----
 include/block/blockjob.h   |  30 ++++++--
 include/qapi/qmp/qerror.h  |   3 -
 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/109     |   2 +-
 tests/qemu-iotests/109.out |  88 +++++++++++------------
 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/qemu-iotests/156     |   1 +
 tests/qemu-iotests/156.out |   4 +-
 tests/test-blockjob-txn.c  |   2 +-
 util/id.c                  |   1 +
 28 files changed, 396 insertions(+), 231 deletions(-)

-- 
2.8.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]