[PATCH v4 14/19] blockjob: block_job_get_aio_context is a GS function

Emanuele Giuseppe Esposito posted 19 patches 4 years ago
Maintainers: Stefan Hajnoczi <stefanha@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>, John Snow <jsnow@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Fam Zheng <fam@euphon.net>, Wen Congyang <wencongyang2@huawei.com>, Xie Changlong <xiechanglong.d@gmail.com>, Kevin Wolf <kwolf@redhat.com>, Markus Armbruster <armbru@redhat.com>
There is a newer version of this series
[PATCH v4 14/19] blockjob: block_job_get_aio_context is a GS function
Posted by Emanuele Giuseppe Esposito 4 years ago
Move block_job_get_aio_context under the GS category in blockjob.h,
as it is always called with the BQL held.

This is done also to simplify the coming job->aiocontext protection.

For more infos about the GS API, see include/block/block-global-state.h

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
 blockjob.c               |  1 +
 include/block/blockjob.h | 15 ++++++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/blockjob.c b/blockjob.c
index a6c94b6b64..04d868f020 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -568,5 +568,6 @@ BlockErrorAction block_job_error_action(BlockJob *job, BlockdevOnError on_err,
 
 AioContext *block_job_get_aio_context(BlockJob *job)
 {
+    assert(qemu_in_main_thread());
     return job->job.aio_context;
 }
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index a9a6cf2b84..376cd95877 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -169,6 +169,14 @@ BlockJobInfo *block_job_query_locked(BlockJob *job, Error **errp);
  */
 void block_job_iostatus_reset_locked(BlockJob *job);
 
+/*
+ * block_job_get_aio_context:
+ *
+ * Returns aio context associated with a block job.
+ */
+AioContext *block_job_get_aio_context(BlockJob *job);
+
+
 /* Common functions that are neither I/O nor Global State */
 
 /**
@@ -186,11 +194,4 @@ bool block_job_is_internal(BlockJob *job);
  */
 const BlockJobDriver *block_job_driver(BlockJob *job);
 
-/*
- * block_job_get_aio_context:
- *
- * Returns aio context associated with a block job.
- */
-AioContext *block_job_get_aio_context(BlockJob *job);
-
 #endif
-- 
2.31.1