[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around job_finish_sync() |
Date: |
Tue, 11 Sep 2018 16:11:29 +0800 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
On Fri, 09/07 18:15, Kevin Wolf wrote:
> All callers in QEMU proper hold the AioContext lock when calling
> job_finish_sync(). test-blockjob should do the same.
I think s/job_finish_sync/job_cancel_sync/ in the subject is more accurate?
Reviewed-by: Fam Zheng <address@hidden>
>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
> include/qemu/job.h | 6 ++++++
> tests/test-blockjob.c | 6 ++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/include/qemu/job.h b/include/qemu/job.h
> index 0dae5b8481..8ac48dbd28 100644
> --- a/include/qemu/job.h
> +++ b/include/qemu/job.h
> @@ -520,6 +520,8 @@ void job_user_cancel(Job *job, bool force, Error **errp);
> *
> * Returns the return value from the job if the job actually completed
> * during the call, or -ECANCELED if it was canceled.
> + *
> + * Callers must hold the AioContext lock of job->aio_context.
> */
> int job_cancel_sync(Job *job);
>
> @@ -537,6 +539,8 @@ void job_cancel_sync_all(void);
> * function).
> *
> * Returns the return value from the job.
> + *
> + * Callers must hold the AioContext lock of job->aio_context.
> */
> int job_complete_sync(Job *job, Error **errp);
>
> @@ -579,6 +583,8 @@ void job_defer_to_main_loop(Job *job,
> JobDeferToMainLoopFn *fn, void *opaque);
> *
> * Returns 0 if the job is successfully completed, -ECANCELED if the job was
> * cancelled before completing, and -errno in other error cases.
> + *
> + * Callers must hold the AioContext lock of job->aio_context.
> */
> int job_finish_sync(Job *job, void (*finish)(Job *, Error **errp), Error
> **errp);
>
> diff --git a/tests/test-blockjob.c b/tests/test-blockjob.c
> index cb42f06e61..8c2babbe35 100644
> --- a/tests/test-blockjob.c
> +++ b/tests/test-blockjob.c
> @@ -230,6 +230,10 @@ static void cancel_common(CancelJob *s)
> BlockJob *job = &s->common;
> BlockBackend *blk = s->blk;
> JobStatus sts = job->job.status;
> + AioContext *ctx;
> +
> + ctx = job->job.aio_context;
> + aio_context_acquire(ctx);
>
> job_cancel_sync(&job->job);
> if (sts != JOB_STATUS_CREATED && sts != JOB_STATUS_CONCLUDED) {
> @@ -239,6 +243,8 @@ static void cancel_common(CancelJob *s)
> assert(job->job.status == JOB_STATUS_NULL);
> job_unref(&job->job);
> destroy_blk(blk);
> +
> + aio_context_release(ctx);
> }
>
> static void test_cancel_created(void)
> --
> 2.13.6
>
- [Qemu-block] [PATCH 00/14] Fix some jobs/drain/aio_poll related hangs, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around job_finish_sync(), Kevin Wolf, 2018/09/07
- Re: [Qemu-block] [PATCH 03/14] test-blockjob: Acquire AioContext around job_finish_sync(),
Fam Zheng <=
- [Qemu-block] [PATCH 01/14] blockjob: Wake up BDS when job becomes idle, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 04/14] job: Use AIO_WAIT_WHILE() in job_finish_sync(), Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 02/14] test-bdrv-drain: Drain with block jobs in an I/O thread, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 07/14] aio-wait: Increase num_waiters even in home thread, Kevin Wolf, 2018/09/07
- [Qemu-block] [PATCH 05/14] test-bdrv-drain: Test AIO_WAIT_WHILE() in completion callback, Kevin Wolf, 2018/09/07