diff options
| author | Kevin Wolf <kwolf@redhat.com> | 2018-04-20 17:00:29 +0200 |
|---|---|---|
| committer | Kevin Wolf <kwolf@redhat.com> | 2018-05-23 14:30:50 +0200 |
| commit | b69f777dd9ba992fdd35828a90eefcd88c0ec332 (patch) | |
| tree | 17a25005638cf2c9b8317751249374ccf060ce7f /include/qemu/job.h | |
| parent | 004e95df98266da33e08c9f1731aca71b6d6d7c4 (diff) | |
| download | focaccia-qemu-b69f777dd9ba992fdd35828a90eefcd88c0ec332.tar.gz focaccia-qemu-b69f777dd9ba992fdd35828a90eefcd88c0ec332.zip | |
job: Add job_drain()
block_job_drain() contains a blk_drain() call which cannot be moved to Job, so add a new JobDriver callback JobDriver.drain which has a common implementation for all BlockJobs. In addition to this we keep the existing BlockJobDriver.drain callback that is called by the common drain implementation for all block jobs. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'include/qemu/job.h')
| -rw-r--r-- | include/qemu/job.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/qemu/job.h b/include/qemu/job.h index 2648c74281..aebc1959e6 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -167,6 +167,13 @@ struct JobDriver { */ void (*user_resume)(Job *job); + /* + * If the callback is not NULL, it will be invoked when the job has to be + * synchronously cancelled or completed; it should drain any activities + * as required to ensure progress. + */ + void (*drain)(Job *job); + /** * If the callback is not NULL, it will be invoked when all the jobs * belonging to the same transaction complete; or upon this job's @@ -325,6 +332,12 @@ bool job_user_paused(Job *job); */ void job_user_resume(Job *job, Error **errp); +/* + * Drain any activities as required to ensure progress. This can be called in a + * loop to synchronously complete a job. + */ +void job_drain(Job *job); + /** * Get the next element from the list of block jobs after @job, or the * first one if @job is %NULL. |