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/block | |
parent | 004e95df98266da33e08c9f1731aca71b6d6d7c4 (diff) |
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/block')
-rw-r--r-- | include/block/blockjob_int.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h index bf2b762808..38fe22d7e0 100644 --- a/include/block/blockjob_int.h +++ b/include/block/blockjob_int.h @@ -65,6 +65,10 @@ struct BlockJobDriver { * If the callback is not NULL, it will be invoked when the job has to be * synchronously cancelled or completed; it should drain BlockDriverStates * as required to ensure progress. + * + * Block jobs must use the default implementation for job_driver.drain, + * which will in turn call this callback after doing generic block job + * stuff. */ void (*drain)(BlockJob *job); }; @@ -112,6 +116,14 @@ void block_job_free(Job *job); void block_job_user_resume(Job *job); /** + * block_job_drain: + * Callback to be used for JobDriver.drain in all block jobs. Drains the main + * block node associated with the block jobs and calls BlockJobDriver.drain for + * job-specific actions. + */ +void block_job_drain(Job *job); + +/** * block_job_yield: * @job: The job that calls the function. * |