RFC Generic background jobs
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest33 patches 8 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/33 | blockjob: Wrappers for progress counter accessblock/ block/ block/ +3 more | +63 | 1 reply | |
| 2/33 | blockjob: Move RateLimit to BlockJobblock/ block/ block/ +2 more | +13 | 1 reply | |
| 3/33 | blockjob: Implement block_job_set_speed() centrallyblock/ block/ block/ +4 more | +6 | 1 reply | |
| 4/33 | blockjob: Introduce block_job_ratelimit_get_delay()block/ block/ block/ +3 more | +29 | 1 reply | |
| 5/33 | blockjob: Add block_job_driver()block/ blockjob.c include/ | +17 | 1 reply | |
| 6/33 | blockjob: Remove block_job_pause/resume_all()blockjob.c include/ | +0 | 0 replies | |
| 7/33 | job: Create Job, JobDriver and job_create()MAINTAINERS Makefile.objs block/ +11 more | +169 | 0 replies | |
| 8/33 | job: Rename BlockJobType into JobTypeblock/ block/ block/ +4 more | +16 | 1 reply | |
| 9/33 | job: Add JobDriver.job_typeblock/ block/ block/ +5 more | +33 | 0 replies | |
| 10/33 | job: Add job_delete()blockjob.c include/ job.c | +10 | 1 reply | |
| 11/33 | job: Maintain a list of all jobsblockjob.c include/ include/ +1 more | +75 | 0 replies | |
| 12/33 | job: Move state transitions to Jobblock/ blockjob.c include/ +5 more | +117 | 0 replies | |
| 13/33 | job: Add reference countingblock/ block/ block/ +10 more | +76 | 0 replies | |
| 14/33 | job: Move cancelled to Jobblock/ block/ block/ +8 more | +50 | 0 replies | |
| 15/33 | job: Add Job.aio_contextblockjob.c include/ job.c | +13 | 0 replies | |
| 16/33 | job: Move defer_to_main_loop to Jobblock/ block/ block/ +9 more | +98 | 0 replies | |
| 17/33 | job: Move coroutine and related code to Jobblock/ block/ block/ +11 more | +294 | 0 replies | |
| 18/33 | job: Add job_sleep_ns()block/ block/ block/ +8 more | +60 | 0 replies | |
| 19/33 | job: Move pause/resume functions to Jobblock/ block/ block/ +10 more | +117 | 0 replies | |
| 20/33 | job: Replace BlockJob.completed with job_is_completed()blockjob.c include/ include/ +2 more | +34 | 0 replies | |
| 21/33 | job: Move BlockJobCreateFlags to Jobblock/ block/ block/ +10 more | +53 | 0 replies | |
| 22/33 | blockjob: Split block_job_event_pending()blockjob.c | +18 | 0 replies | |
| 23/33 | job: Add job_event_*()blockjob.c include/ include/ +1 more | +74 | 0 replies | |
| 24/33 | job: Move single job finalisation to Jobblock/ block/ block/ +7 more | +194 | 0 replies | |
| 25/33 | job: Convert block_job_cancel_async() to Jobblock/ blockjob.c include/ +1 more | +21 | 0 replies | |
| 26/33 | job: Add job_drain()block/ block/ block/ +8 more | +55 | 0 replies | |
| 27/33 | job: Move .complete callback to Jobblock/ blockdev.c blockjob.c +6 more | +43 | 0 replies | |
| 28/33 | job: Move job_finish_sync() to Jobblockjob.c include/ job.c | +46 | 0 replies | |
| 29/33 | job: Switch transactions to JobTxnblock/ blockdev.c blockjob.c +5 more | +54 | 0 replies | |
| 30/33 | job: Move transactions to Jobblockdev.c blockjob.c include/ +5 more | +303 | 0 replies | |
| 31/33 | job: Move completion and cancellation to Jobblock.c block/ block/ +15 more | +157 | 0 replies | |
| 32/33 | job: Add job_yield()block/ block/ blockjob.c +4 more | +27 | 0 replies | |
| 33/33 | job: Add job_dismiss()blockdev.c blockjob.c include/ +3 more | +26 | 0 replies |
Reviews trailers per patch
6 of 33 patches have a Reviewed-by or Acked-by.
| Patch | Eric Blake |
|---|---|
| 1/33 | R-b |
| 2/33 | R-b |
| 3/33 | R-b |
| 4/33 | R-b |
| 5/33 | R-b |
| 6/33 | |
| 7/33 | |
| 8/33 | R-b |
| 9/33 | |
| 10/33 | |
| 11/33 | |
| 12/33 | |
| 13/33 | |
| 14/33 | |
| 15/33 | |
| 16/33 | |
| 17/33 | |
| 18/33 | |
| 19/33 | |
| 20/33 | |
| 21/33 | |
| 22/33 | |
| 23/33 | |
| 24/33 | |
| 25/33 | |
| 26/33 | |
| 27/33 | |
| 28/33 | |
| 29/33 | |
| 30/33 | |
| 31/33 | |
| 32/33 | |
| 33/33 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [Qemu-devel] [RFC PATCH 00/33] Generic background jobs
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.
The split between BlockJob and Job is reasonably complete as of this RFC (though there are still some rough edges). Missing are mainly:
* Some cleanups. This means mostly TODOs left for functions moved to job.c that should become static again, but were still called from blockjob.c. At this point, most of these public declarations aren't actually necessary any more, or very little is missing to make them unnecessary.
* A QMP interface that can be used with non-block job. The existing block-job-* QMP commands will tell the user that they don't know the job if you pass the ID of a non-block job.
* The actual conversion of x-blockdev-create to Job, as a proof of concept that the generalised infrastructure actually works.
Kevin Wolf (33):
blockjob: Wrappers for progress counter access
blockjob: Move RateLimit to BlockJob
blockjob: Implement block_job_set_speed() centrally
blockjob: Introduce block_job_ratelimit_get_delay()
blockjob: Add block_job_driver()
blockjob: Remove block_job_pause/resume_all()
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
job: Add job_yield()
job: Add job_dismiss()
qapi/block-core.json | 28 +- include/block/block_int.h | 2 +- include/block/blockjob.h | 306 ++---------- include/block/blockjob_int.h | 179 +------ include/qemu/job.h | 513 ++++++++++++++++++++ block.c | 2 +- block/backup.c | 111 +++-- block/commit.c | 75 ++- block/mirror.c | 131 +++--- block/replication.c | 10 +- block/stream.c | 68 ++- blockdev.c | 66 +-- blockjob.c | 1054 ++++++------------------------------------ job.c | 950 +++++++++++++++++++++++++++++++++++++ qemu-img.c | 14 +- tests/test-bdrv-drain.c | 61 +-- tests/test-blockjob-txn.c | 74 +-- tests/test-blockjob.c | 137 +++--- MAINTAINERS | 2 + Makefile.objs | 2 +- block/trace-events | 5 - trace-events | 5 + 22 files changed, 2049 insertions(+), 1746 deletions(-) create mode 100644 include/qemu/job.h create mode 100644 job.c
Signature · 1 line
2.13.6