qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 3/5] blockjob: add AioContext attached callba


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH v4 3/5] blockjob: add AioContext attached callback
Date: Wed, 15 Jun 2016 17:05:28 +0800
User-agent: Mutt/1.6.1 (2016-04-27)

On Tue, 06/14 19:17, Stefan Hajnoczi wrote:
>  
> +static void block_job_attached_aio_context(AioContext *new_context,
> +                                           void *opaque)
> +{
> +    BlockJob *job = opaque;
> +
> +    if (job->driver->attached_aio_context) {
> +        job->driver->attached_aio_context(job, new_context);
> +    }
> +
> +    block_job_resume(job);
> +}
> +
> +static void block_job_detach_aio_context(void *opaque)
> +{
> +    BlockJob *job = opaque;
> +
> +    /* In case the job terminates during aio_poll()... */
> +    block_job_ref(job);
> +
> +    block_job_pause(job);
> +
> +    if (!job->paused) {
> +        /* If job is !job->busy this kicks it into the next pause point. */
> +        block_job_enter(job);
> +    }
> +    while (!job->paused && !job->completed) {
> +        aio_poll(blk_get_aio_context(job->blk), true);

For the complete part, we should do it like block_job_finish_sync:

    while (!job->completed) {
        aio_poll(job->deferred_to_main_loop ? qemu_get_aio_context() :
                                              blk_get_aio_context(job->blk),
                 true);
    }

> +    }
> +
> +    block_job_unref(job);
> +}
> +

Fam



reply via email to

[Prev in Thread] Current Thread [Next in Thread]