qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC PATCH 00/33] Generic background jobs
@ 2018-04-24 15:24 Kevin Wolf
  2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 01/33] blockjob: Wrappers for progress counter access Kevin Wolf
                   ` (34 more replies)
  0 siblings, 35 replies; 43+ messages in thread
From: Kevin Wolf @ 2018-04-24 15:24 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, mreitz, jsnow, jcody, qemu-devel

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

^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2018-04-24 22:27 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-24 15:24 [Qemu-devel] [RFC PATCH 00/33] Generic background jobs Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 01/33] blockjob: Wrappers for progress counter access Kevin Wolf
2018-04-24 21:06   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 02/33] blockjob: Move RateLimit to BlockJob Kevin Wolf
2018-04-24 21:24   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 03/33] blockjob: Implement block_job_set_speed() centrally Kevin Wolf
2018-04-24 21:30   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 04/33] blockjob: Introduce block_job_ratelimit_get_delay() Kevin Wolf
2018-04-24 21:57   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 05/33] blockjob: Add block_job_driver() Kevin Wolf
2018-04-24 22:04   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 06/33] blockjob: Remove block_job_pause/resume_all() Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 07/33] job: Create Job, JobDriver and job_create() Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 08/33] job: Rename BlockJobType into JobType Kevin Wolf
2018-04-24 22:12   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 09/33] job: Add JobDriver.job_type Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 10/33] job: Add job_delete() Kevin Wolf
2018-04-24 22:15   ` Eric Blake
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 11/33] job: Maintain a list of all jobs Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 12/33] job: Move state transitions to Job Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 13/33] job: Add reference counting Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 14/33] job: Move cancelled to Job Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 15/33] job: Add Job.aio_context Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 16/33] job: Move defer_to_main_loop to Job Kevin Wolf
2018-04-24 15:24 ` [Qemu-devel] [RFC PATCH 17/33] job: Move coroutine and related code " Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 18/33] job: Add job_sleep_ns() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 19/33] job: Move pause/resume functions to Job Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 20/33] job: Replace BlockJob.completed with job_is_completed() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 21/33] job: Move BlockJobCreateFlags to Job Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 22/33] blockjob: Split block_job_event_pending() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 23/33] job: Add job_event_*() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 24/33] job: Move single job finalisation to Job Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 25/33] job: Convert block_job_cancel_async() " Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 26/33] job: Add job_drain() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 27/33] job: Move .complete callback to Job Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 28/33] job: Move job_finish_sync() " Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 29/33] job: Switch transactions to JobTxn Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 30/33] job: Move transactions to Job Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 31/33] job: Move completion and cancellation " Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 32/33] job: Add job_yield() Kevin Wolf
2018-04-24 15:25 ` [Qemu-devel] [RFC PATCH 33/33] job: Add job_dismiss() Kevin Wolf
2018-04-24 16:25 ` [Qemu-devel] [RFC PATCH 00/33] Generic background jobs no-reply
2018-04-24 22:27 ` Eric Blake

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).