This is part two of a two part series that refactors the exit logic of jobs.
This series forces all jobs to use the "finalize" semantics that were introduced previously, but only exposed via the backup jobs. Patches 1-3 add plumbing for the auto-dismiss and auto-finalize flags but do not expose these via QAPI/QMP. Patches 4-7 refactor the .exit() callbacks into the component pieces of .prepare(), .commit(), .abort() and .clean(). Except mirror, which I cheat with. Patch 8 removes the last usage of .exit() in a test. Patch 9 removes the callback and the machinery to invoke it. Patches 10-12 expose the new QMP options to all of the jobs. Patch 13 is a doc fixup. "V2": - Split off the first part of the series to Pt.1 - More aggressively refactored .commit() - Went all the way to deleting .exit() callback (Kevin) John Snow (13): block/commit: add block job creation flags block/mirror: add block job creation flags block/stream: add block job creation flags block/commit: refactor commit to use job callbacks block/mirror: conservative mirror_exit refactor block/commit: refactor stream to use job callbacks tests/blockjob: replace Blockjob with Job tests/test-blockjob: remove exit callback jobs: remove .exit callback qapi/block-commit: expose new job properties qapi/block-mirror: expose new job properties qapi/block-stream: expose new job properties block/backup: qapi documentation fixup block/commit.c | 95 +++++++++++++++++++++----------------- block/mirror.c | 31 ++++++++++--- block/stream.c | 28 ++++++++---- blockdev.c | 44 ++++++++++++++++-- hmp.c | 5 +- include/block/block_int.h | 15 ++++-- include/qemu/job.h | 11 ----- job.c | 77 ++++++++++++++----------------- qapi/block-core.json | 80 +++++++++++++++++++++++++++----- tests/test-blockjob-txn.c | 4 +- tests/test-blockjob.c | 114 +++++++++++++++++++++++----------------------- 11 files changed, 309 insertions(+), 195 deletions(-) -- 2.14.4