blockjob: Add block_job_get()

Currently the way to look for a specific block job is to iterate the
list manually using block_job_next().

Since we want to be able to identify a job primarily by its ID it
makes sense to have a function that does just that.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Alberto Garcia 2016-07-05 17:28:54 +03:00 committed by Kevin Wolf
parent 9df229c3ca
commit ffb1f10cd1
2 changed files with 23 additions and 0 deletions

View File

@ -60,6 +60,19 @@ BlockJob *block_job_next(BlockJob *job)
return QLIST_NEXT(job, job_list); return QLIST_NEXT(job, job_list);
} }
BlockJob *block_job_get(const char *id)
{
BlockJob *job;
QLIST_FOREACH(job, &block_jobs, job_list) {
if (!strcmp(id, job->id)) {
return job;
}
}
return NULL;
}
/* Normally the job runs in its BlockBackend's AioContext. The exception is /* Normally the job runs in its BlockBackend's AioContext. The exception is
* block_job_defer_to_main_loop() where it runs in the QEMU main loop. Code * block_job_defer_to_main_loop() where it runs in the QEMU main loop. Code
* that supports both cases uses this helper function. * that supports both cases uses this helper function.

View File

@ -211,6 +211,16 @@ struct BlockJob {
*/ */
BlockJob *block_job_next(BlockJob *job); BlockJob *block_job_next(BlockJob *job);
/**
* block_job_get:
* @id: The id of the block job.
*
* Get the block job identified by @id (which must not be %NULL).
*
* Returns the requested job, or %NULL if it doesn't exist.
*/
BlockJob *block_job_get(const char *id);
/** /**
* block_job_create: * block_job_create:
* @job_type: The class object for the newly-created job. * @job_type: The class object for the newly-created job.