[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/10] blockjob: move iostatus reset inside block_jo
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 06/10] blockjob: move iostatus reset inside block_job_user_resume |
Date: |
Thu, 23 Mar 2017 18:39:24 +0100 |
Outside blockjob.c, the block_job_iostatus_reset function is used once
in the monitor and once in BlockBackend. When we introduce the block
job mutex, block_job_iostatus_reset's client is going to be the block
layer (for which blockjob.c will take the block job mutex) rather than
the monitor (which will take the block job mutex by itself).
The monitor's call to block_job_iostatus_reset from the monitor comes
just before the sole call to block_job_user_resume, so reset the
iostatus directly from block_job_iostatus_reset. This will avoid
the need to introduce separate block_job_iostatus_reset and
block_job_iostatus_reset_locked APIs.
After making this change, move the function together with the others
that were moved in the previous patch.
Signed-off-by: Paolo Bonzini <address@hidden>
---
blockdev.c | 1 -
blockjob.c | 11 ++++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index c5b2c2c..fbc376b 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3726,7 +3726,6 @@ void qmp_block_job_resume(const char *device, Error
**errp)
}
trace_qmp_block_job_resume(job);
- block_job_iostatus_reset(job);
block_job_user_resume(job);
aio_context_release(aio_context);
}
diff --git a/blockjob.c b/blockjob.c
index c5f1d19..c9cb5b1 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -481,6 +481,7 @@ void block_job_user_resume(BlockJob *job)
{
if (job && job->user_paused && job->pause_count > 0) {
job->user_paused = false;
+ block_job_iostatus_reset(job);
block_job_resume(job);
}
}
@@ -496,11 +497,6 @@ void block_job_cancel(BlockJob *job)
}
}
-void block_job_iostatus_reset(BlockJob *job)
-{
- job->iostatus = BLOCK_DEVICE_IO_STATUS_OK;
-}
-
static int block_job_finish_sync(BlockJob *job,
void (*finish)(BlockJob *, Error **errp),
Error **errp)
@@ -751,6 +747,11 @@ void block_job_yield(BlockJob *job)
block_job_pause_point(job);
}
+void block_job_iostatus_reset(BlockJob *job)
+{
+ job->iostatus = BLOCK_DEVICE_IO_STATUS_OK;
+}
+
void block_job_event_ready(BlockJob *job)
{
job->ready = true;
--
2.9.3
- [Qemu-devel] [PATCH for-2.10 00/10] Preparation for block job mutex, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 01/10] blockjob: remove unnecessary check, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 02/10] blockjob: remove iostatus_reset callback, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 03/10] blockjob: introduce block_job_fail, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 05/10] blockjob: separate monitor and blockjob APIs, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 04/10] blockjob: introduce block_job_pause/resume_all, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 06/10] blockjob: move iostatus reset inside block_job_user_resume,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 09/10] blockjob: reorganize block_job_completed_txn_abort, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 08/10] blockjob: introduce block_job_cancel_async, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 07/10] blockjob: strengthen a bit test-blockjob-txn, Paolo Bonzini, 2017/03/23
- [Qemu-devel] [PATCH 10/10] blockjob: use deferred_to_main_loop to indicate the coroutine has ended, Paolo Bonzini, 2017/03/23