On Mon, May 08, 2017 at 04:13:05PM +0200, Paolo Bonzini wrote:
> 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.
>
> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
> Reviewed-by: John Snow <js...@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
> ---
> blockdev.c | 1 -
> blockjob.c | 11 ++++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/blockdev.c b/blockdev.c
> index 64282065d8..cdec4ac82a 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 41dc2fe9f1..7edf779adc 100644
> --- a/blockjob.c
> +++ b/blockjob.c
> @@ -412,6 +412,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);
> }
> }
> @@ -427,11 +428,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)
> @@ -767,6 +763,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.12.2
>
>
Reviewed-by: Jeff Cody <jc...@redhat.com>