aboutsummaryrefslogtreecommitdiff
path: root/include/block
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2016-04-04 16:43:51 +0300
committerKevin Wolf <kwolf@redhat.com>2016-05-25 19:04:21 +0200
commita7112795c14d99b81600f8809fda5ce18b430830 (patch)
treef422a21a2d8ccafde4d68b61a11b17842208d13d /include/block
parentd004bd52aacbe9bf43c38fa6cb20a6f241ac64be (diff)
block: keep a list of block jobs
The current way to obtain the list of existing block jobs is to iterate over all root nodes and check which ones own a job. Since we want to be able to support block jobs in other nodes as well, this patch keeps a list of jobs that is updated every time one is created or destroyed. Signed-off-by: Alberto Garcia <berto@igalia.com> 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.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index 073a433cf8..30bb2c6fd6 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -135,6 +135,9 @@ struct BlockJob {
*/
bool deferred_to_main_loop;
+ /** Element of the list of block jobs */
+ QLIST_ENTRY(BlockJob) job_list;
+
/** Status that is published by the query-block-jobs QMP API */
BlockDeviceIoStatus iostatus;
@@ -173,6 +176,17 @@ struct BlockJob {
};
/**
+ * block_job_next:
+ * @job: A block job, or %NULL.
+ *
+ * Get the next element from the list of block jobs after @job, or the
+ * first one if @job is %NULL.
+ *
+ * Returns the requested job, or %NULL if there are no more jobs left.
+ */
+BlockJob *block_job_next(BlockJob *job);
+
+/**
* block_job_create:
* @job_type: The class object for the newly-created job.
* @bs: The block