[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 04/11] blockjobs: Always use block_job_get_aio_co
From: |
John Snow |
Subject: |
[Qemu-devel] [PATCH v2 04/11] blockjobs: Always use block_job_get_aio_context |
Date: |
Fri, 30 Sep 2016 18:00:42 -0400 |
There are a few places where we're fishing it out for ourselves.
Let's not do that and instead use the helper.
Signed-off-by: John Snow <address@hidden>
---
block/io.c | 4 ++--
blockdev.c | 4 ++--
blockjob.c | 2 +-
include/block/blockjob.h | 9 +++++++++
qemu-img.c | 2 +-
5 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/block/io.c b/block/io.c
index 868b065..f26a503 100644
--- a/block/io.c
+++ b/block/io.c
@@ -288,7 +288,7 @@ void bdrv_drain_all(void)
GSList *aio_ctxs = NULL, *ctx;
while ((job = block_job_next(job))) {
- AioContext *aio_context = blk_get_aio_context(job->blk);
+ AioContext *aio_context = block_job_get_aio_context(job);
aio_context_acquire(aio_context);
block_job_pause(job, false);
@@ -347,7 +347,7 @@ void bdrv_drain_all(void)
job = NULL;
while ((job = block_job_next(job))) {
- AioContext *aio_context = blk_get_aio_context(job->blk);
+ AioContext *aio_context = block_job_get_aio_context(job);
aio_context_acquire(aio_context);
block_job_resume(job);
diff --git a/blockdev.c b/blockdev.c
index 268452f..0ac507f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3596,7 +3596,7 @@ static BlockJob *find_block_job(const char *id,
AioContext **aio_context,
return NULL;
}
- *aio_context = blk_get_aio_context(job->blk);
+ *aio_context = block_job_get_aio_context(job);
aio_context_acquire(*aio_context);
return job;
@@ -3956,7 +3956,7 @@ BlockJobInfoList *qmp_query_block_jobs(Error **errp)
for (job = block_job_next(NULL); job; job = block_job_next(job)) {
BlockJobInfoList *elem = g_new0(BlockJobInfoList, 1);
- AioContext *aio_context = blk_get_aio_context(job->blk);
+ AioContext *aio_context = block_job_get_aio_context(job);
aio_context_acquire(aio_context);
elem->value = block_job_query(job);
diff --git a/blockjob.c b/blockjob.c
index 2a35f50..073d9ce 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -78,7 +78,7 @@ BlockJob *block_job_get(const char *id)
* block_job_defer_to_main_loop() where it runs in the QEMU main loop. Code
* that supports both cases uses this helper function.
*/
-static AioContext *block_job_get_aio_context(BlockJob *job)
+AioContext *block_job_get_aio_context(BlockJob *job)
{
return job->deferred_to_main_loop ?
qemu_get_aio_context() :
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index 081f6c2..6f28c73 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -513,4 +513,13 @@ void block_job_txn_unref(BlockJobTxn *txn);
*/
void block_job_txn_add_job(BlockJobTxn *txn, BlockJob *job);
+/**
+ * block_job_get_aio_context:
+ * @job: Job to get the aio_context for
+ *
+ * Fetch the current context for the given BlockJob. May be the main loop if
+ * the job has already deferred to main for final cleanup.
+ */
+AioContext *block_job_get_aio_context(BlockJob *job);
+
#endif
diff --git a/qemu-img.c b/qemu-img.c
index ceffefe..204fa9c 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -793,7 +793,7 @@ static void common_block_job_cb(void *opaque, int ret)
static void run_block_job(BlockJob *job, Error **errp)
{
- AioContext *aio_context = blk_get_aio_context(job->blk);
+ AioContext *aio_context = block_job_get_aio_context(job);
do {
aio_poll(aio_context, true);
--
2.7.4
- [Qemu-devel] [PATCH v2 00/11] blockjobs: Fix transactional race condition, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 01/11] blockjob: fix dead pointer in txn list, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 03/11] Blockjobs: Internalize user_pause logic, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 02/11] blockjob: centralize QMP event emissions, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 04/11] blockjobs: Always use block_job_get_aio_context,
John Snow <=
- [Qemu-devel] [PATCH v2 06/11] blockjobs: fix documentation, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 07/11] blockjob: add .clean property, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 05/11] blockjobs: split interface into public/private, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 08/11] blockjob: add .start field, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 09/11] blockjob: add block_job_start, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 10/11] blockjob: refactor backup_start as backup_job_create, John Snow, 2016/09/30
- [Qemu-devel] [PATCH v2 11/11] iotests: add transactional failure race test, John Snow, 2016/09/30
- Re: [Qemu-devel] [PATCH v2 00/11] blockjobs: Fix transactional race condition, no-reply, 2016/09/30