This is a small collection of patches to reduce our use of the bs->job pointer where possible. There are still more usages in the code, but this cuts down on a few.
The goal is to eventually eliminate all of them and allow multiple block jobs to run concurrently, but design on what that will look like is on-going. In the meantime, eliminate a few obviously needless references to bs->job by allowing more systems to carry pointers to jobs directly instead of trying to fish the pointer out of the BDS all the time. === v2: === Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/5:[----] [--] 'block: Allow mirror_start to return job references' 002/5:[----] [--] 'block: Allow stream_start to return job references' 003/5:[----] [--] 'block: allow backup_start to return job references' 004/5:[down] 'block/backup: Pack Notifier within BackupBlockJob' 005/5:[0006] [FC] 'blockjob: add Job parameter to BlockCompletionFunc' 4: Rewritten to pack the notifier within the job, instead of the job within a subclassed notifier. [Paolo] 5: Remove junk assert and extraneous local BDS variable. [Kevin] ________________________________________________________________________________ For convenience, this branch is available at: https://github.com/jnsnow/qemu.git branch block-multijob2 https://github.com/jnsnow/qemu/tree/block-multijob2 This version is tagged block-multijob2-v2: https://github.com/jnsnow/qemu/releases/tag/block-multijob2-v2 John Snow (5): block: Allow mirror_start to return job references block: Allow stream_start to return job references block: allow backup_start to return job references block/backup: Pack Notifier within BackupBlockJob blockjob: add Job parameter to BlockCompletionFunc block/backup.c | 58 +++++++------ block/commit.c | 2 +- block/mirror.c | 74 ++++++++-------- block/stream.c | 10 ++- blockdev.c | 210 +++++++++++++++++++++++++--------------------- blockjob.c | 13 ++- include/block/block.h | 2 + include/block/block_int.h | 27 +++--- include/block/blockjob.h | 6 +- qemu-img.c | 16 ++-- tests/test-blockjob-txn.c | 4 +- 11 files changed, 237 insertions(+), 185 deletions(-) -- 2.4.3