[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [RFC PATCH 00/33] Generic background jobs
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [RFC PATCH 00/33] Generic background jobs |
Date: |
Tue, 24 Apr 2018 17:24:42 +0200 |
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
--
2.13.6
- [Qemu-block] [RFC PATCH 00/33] Generic background jobs,
Kevin Wolf <=
- [Qemu-block] [RFC PATCH 01/33] blockjob: Wrappers for progress counter access, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 02/33] blockjob: Move RateLimit to BlockJob, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 03/33] blockjob: Implement block_job_set_speed() centrally, Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 04/33] blockjob: Introduce block_job_ratelimit_get_delay(), Kevin Wolf, 2018/04/24
- [Qemu-block] [RFC PATCH 05/33] blockjob: Add block_job_driver(), Kevin Wolf, 2018/04/24