From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, mreitz@redhat.com, jsnow@redhat.com,
eblake@redhat.com, jcody@redhat.com, armbru@redhat.com,
qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH v2 00/40] Generic background jobs
Date: Fri, 18 May 2018 15:20:34 +0200 [thread overview]
Message-ID: <20180518132114.4070-1-kwolf@redhat.com> (raw)
Before we can make x-blockdev-create a background job, we need to
generalise the job infrastructure so that it can be used without any
associated block node.
This series extracts a Job object from the block job infrastructure,
which should contain everything related to jobs that doesn't require the
block layer to be involved.
Job creation with a centralised job-create command (if we even want
this) as well as the actual conversion of x-blockdev-create to Job is
left for another series.
v2:
- Already applied a small prefix of the series and rebased, so a few
patches are missing compared to v1
- Fixed up forgotten renames of identifiers in comments (several
patches all over the series) [Max]
- Patch 1 and 2 (new):
QAPI documentation improvements for existing block-job-* commands
- Patch 5 (was patch 10; 'job: Add JobDriver.job_type'):
Added 'const' to job_type()/job_type_str() parameter [Max]
- Patch 7 (was patch 12; 'job: Maintain a list of all jobs'):
block_job_next(NULL) doesn't rely on BlockJob.job being the first
field any more [Eric]
- Patch 8 (was patch 13; 'job: Move state transitions to Job'):
Renamed JobVerb paramater from 'bv' to 'verb' [Eric]
- Patch 12 (was patch 17; 'job: Move defer_to_main_loop to Job'):
Added commit message [Max, Eric, John]
Removed stale comment [Max]
- Patch 26 (was patch 31; 'job: Move transactions to Job'):
job_event_pending() can keep returning void [Max]
- Patch 27 (was patch 32; 'job: Move completion and cancellation to
Job') and patch 28 (new):
Added TODO in patch 27, and resolved it in patch 28 by moving the
job_cancel_all() call out of bdrv_close_all() to the callers [Max]
- Patch 30 (was patch 34; 'job: Add job_dismiss()'):
Fixed uninitialised use of 'job' [Max]
- Patch 33 (was patch 37; 'job: Move progress fields to Job'):
Fixed documentation for job_progress_update/set_remaining() [Eric]
- Patch 34 (new):
Separate patch for adding qapi/job.json that just moves the three
Job-related enums JobType, JobStatus and JobVerb (without any commands
or events) [Max]
- Patch 35 (was patch 38; 'job: Add JOB_STATUS_CHANGE QMP event'):
Checking JOB_STATUS_CHANGE events more consistently in tests [Max]
Updated qemu-iotests 094 reference output [Max]
- Patch 36 (was patch 39; 'job: Add lifecycle QMP commands'):
Removed 'force' option from 'job-cancel' and make force=true the only
behaviour. This makes mirror behave the same as other jobs in the
context of 'job-cancel'. [Max]
Fixed 'job-pause' documentation [Max]
- Patch 37 (was patch 40; 'job: Add query-jobs QMP command'):
QAPI documentation improvements [Max]
- Patch 38 (new):
Remove redundant BlockJob.driver [Max]
- Patch 40 (was patch 42; 'qemu-iotests: Test job-* with block jobs'):
Filtered out progress in 'query-jobs' immediately after the job is
started because on tmpfs the first request will already have
completed. [Max]
Kevin Wolf (40):
blockjob: Update block-job-pause/resume documentation
blockjob: Improve BlockJobInfo.offset/len documentation
job: Create Job, JobDriver and job_create()
job: Rename BlockJobType into JobType
job: Add JobDriver.job_type
job: Add job_delete()
job: Maintain a list of all jobs
job: Move state transitions to Job
job: Add reference counting
job: Move cancelled to Job
job: Add Job.aio_context
job: Move defer_to_main_loop to Job
job: Move coroutine and related code to Job
job: Add job_sleep_ns()
job: Move pause/resume functions to Job
job: Replace BlockJob.completed with job_is_completed()
job: Move BlockJobCreateFlags to Job
blockjob: Split block_job_event_pending()
job: Add job_event_*()
job: Move single job finalisation to Job
job: Convert block_job_cancel_async() to Job
job: Add job_drain()
job: Move .complete callback to Job
job: Move job_finish_sync() to Job
job: Switch transactions to JobTxn
job: Move transactions to Job
job: Move completion and cancellation to Job
block: Cancel job in bdrv_close_all() callers
job: Add job_yield()
job: Add job_dismiss()
job: Add job_is_ready()
job: Add job_transition_to_ready()
job: Move progress fields to Job
job: Introduce qapi/job.json
job: Add JOB_STATUS_CHANGE QMP event
job: Add lifecycle QMP commands
job: Add query-jobs QMP command
blockjob: Remove BlockJob.driver
iotests: Move qmp_to_opts() to VM
qemu-iotests: Test job-* with block jobs
qapi/block-core.json | 116 +----
qapi/job.json | 252 ++++++++++
qapi/qapi-schema.json | 1 +
include/block/block_int.h | 2 +-
include/block/blockjob.h | 324 +-----------
include/block/blockjob_int.h | 176 +------
include/qemu/job.h | 562 +++++++++++++++++++++
block.c | 2 +-
block/backup.c | 59 ++-
block/commit.c | 44 +-
block/mirror.c | 113 +++--
block/replication.c | 10 +-
block/stream.c | 39 +-
blockdev.c | 68 +--
blockjob.c | 1094 ++++++-----------------------------------
job-qmp.c | 188 +++++++
job.c | 1000 +++++++++++++++++++++++++++++++++++++
qemu-img.c | 22 +-
qemu-nbd.c | 8 +-
tests/test-bdrv-drain.c | 63 +--
tests/test-blockjob-txn.c | 74 +--
tests/test-blockjob.c | 141 +++---
vl.c | 1 +
MAINTAINERS | 3 +
Makefile | 9 +
Makefile.objs | 7 +-
block/trace-events | 5 -
tests/qemu-iotests/030 | 17 +-
tests/qemu-iotests/040 | 2 +
tests/qemu-iotests/041 | 23 +-
tests/qemu-iotests/094.out | 7 +
tests/qemu-iotests/095 | 2 +-
tests/qemu-iotests/095.out | 6 +
tests/qemu-iotests/109 | 2 +-
tests/qemu-iotests/109.out | 178 ++++++-
tests/qemu-iotests/124 | 8 +
tests/qemu-iotests/127.out | 7 +
tests/qemu-iotests/141 | 13 +-
tests/qemu-iotests/141.out | 29 ++
tests/qemu-iotests/144 | 2 +-
tests/qemu-iotests/144.out | 7 +
tests/qemu-iotests/155 | 2 +-
tests/qemu-iotests/156 | 2 +-
tests/qemu-iotests/156.out | 7 +
tests/qemu-iotests/185 | 12 +-
tests/qemu-iotests/185.out | 10 +
tests/qemu-iotests/191 | 4 +-
tests/qemu-iotests/191.out | 132 +++++
tests/qemu-iotests/219 | 209 ++++++++
tests/qemu-iotests/219.out | 327 ++++++++++++
tests/qemu-iotests/group | 1 +
tests/qemu-iotests/iotests.py | 50 +-
trace-events | 14 +
53 files changed, 3578 insertions(+), 1878 deletions(-)
create mode 100644 qapi/job.json
create mode 100644 include/qemu/job.h
create mode 100644 job-qmp.c
create mode 100644 job.c
create mode 100755 tests/qemu-iotests/219
create mode 100644 tests/qemu-iotests/219.out
--
2.13.6
next reply other threads:[~2018-05-18 13:21 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-18 13:20 Kevin Wolf [this message]
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 01/40] blockjob: Update block-job-pause/resume documentation Kevin Wolf
2018-05-18 14:20 ` Eric Blake
2018-05-18 17:12 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 02/40] blockjob: Improve BlockJobInfo.offset/len documentation Kevin Wolf
2018-05-18 14:25 ` Eric Blake
2018-05-18 17:47 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 03/40] job: Create Job, JobDriver and job_create() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 04/40] job: Rename BlockJobType into JobType Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 05/40] job: Add JobDriver.job_type Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 06/40] job: Add job_delete() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 07/40] job: Maintain a list of all jobs Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 08/40] job: Move state transitions to Job Kevin Wolf
2018-05-18 14:36 ` Eric Blake
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 09/40] job: Add reference counting Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 10/40] job: Move cancelled to Job Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 11/40] job: Add Job.aio_context Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 12/40] job: Move defer_to_main_loop to Job Kevin Wolf
2018-05-18 17:56 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 13/40] job: Move coroutine and related code " Kevin Wolf
2018-05-18 18:43 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 14/40] job: Add job_sleep_ns() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 15/40] job: Move pause/resume functions to Job Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 16/40] job: Replace BlockJob.completed with job_is_completed() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 17/40] job: Move BlockJobCreateFlags to Job Kevin Wolf
2018-05-23 22:24 ` John Snow
2018-05-24 8:17 ` Kevin Wolf
2018-05-24 17:46 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 18/40] blockjob: Split block_job_event_pending() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 19/40] job: Add job_event_*() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 20/40] job: Move single job finalisation to Job Kevin Wolf
2018-05-18 18:00 ` Eric Blake
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 21/40] job: Convert block_job_cancel_async() " Kevin Wolf
2018-05-23 23:18 ` John Snow
2018-05-24 8:24 ` Kevin Wolf
2018-05-24 17:42 ` John Snow
2018-05-25 8:00 ` Kevin Wolf
2018-05-25 17:43 ` John Snow
2018-05-29 11:59 ` [Qemu-devel] [Qemu-block] " Kashyap Chamarthy
2018-05-29 12:30 ` Max Reitz
2018-05-29 13:10 ` Kashyap Chamarthy
2018-05-29 13:22 ` Kashyap Chamarthy
2018-05-30 20:33 ` John Snow
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 22/40] job: Add job_drain() Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 23/40] job: Move .complete callback to Job Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 24/40] job: Move job_finish_sync() " Kevin Wolf
2018-05-18 13:20 ` [Qemu-devel] [PATCH v2 25/40] job: Switch transactions to JobTxn Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 26/40] job: Move transactions to Job Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 27/40] job: Move completion and cancellation " Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 28/40] block: Cancel job in bdrv_close_all() callers Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 29/40] job: Add job_yield() Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 30/40] job: Add job_dismiss() Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 31/40] job: Add job_is_ready() Kevin Wolf
2018-05-23 23:42 ` John Snow
2018-05-24 8:30 ` Kevin Wolf
2018-05-24 17:25 ` John Snow
2018-05-25 8:06 ` Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 32/40] job: Add job_transition_to_ready() Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 33/40] job: Move progress fields to Job Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 34/40] job: Introduce qapi/job.json Kevin Wolf
2018-05-18 15:59 ` Eric Blake
2018-05-31 21:21 ` Eric Blake
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 35/40] job: Add JOB_STATUS_CHANGE QMP event Kevin Wolf
2018-05-18 17:55 ` Eric Blake
2018-05-24 0:02 ` John Snow
2018-05-24 8:36 ` Kevin Wolf
2018-05-24 17:36 ` John Snow
2018-05-24 18:22 ` Eric Blake
2018-05-24 18:32 ` John Snow
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 36/40] job: Add lifecycle QMP commands Kevin Wolf
2018-05-18 18:12 ` Eric Blake
2018-05-22 10:40 ` Kevin Wolf
2018-05-23 23:56 ` John Snow
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 37/40] job: Add query-jobs QMP command Kevin Wolf
2018-05-18 18:14 ` Eric Blake
2018-05-18 18:22 ` Eric Blake
2018-05-22 10:44 ` Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 38/40] blockjob: Remove BlockJob.driver Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 39/40] iotests: Move qmp_to_opts() to VM Kevin Wolf
2018-05-18 13:21 ` [Qemu-devel] [PATCH v2 40/40] qemu-iotests: Test job-* with block jobs Kevin Wolf
2018-05-18 14:05 ` [Qemu-devel] [PATCH v2 00/40] Generic background jobs no-reply
2018-05-18 18:41 ` Dr. David Alan Gilbert
2018-05-22 11:01 ` Kevin Wolf
2018-05-22 17:15 ` Marc-André Lureau
2018-05-29 17:16 ` Dr. David Alan Gilbert
2018-05-23 12:31 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180518132114.4070-1-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=jcody@redhat.com \
--cc=jsnow@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).