qemu-block
[Top][All Lists]
Advanced

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

Re: [Qemu-block] [PATCH 02/14] block: Cancel jobs first in bdrv_close_al


From: Alberto Garcia
Subject: Re: [Qemu-block] [PATCH 02/14] block: Cancel jobs first in bdrv_close_all()
Date: Fri, 06 May 2016 11:17:00 +0200
User-agent: Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu)

On Wed 04 May 2016 11:39:13 AM CEST, Kevin Wolf wrote:

>  void bdrv_close_all(void)
>  {
> -    BlockDriverState *bs;
> -    AioContext *aio_context;
> +    block_job_cancel_sync_all();
>  
>      /* Drop references from requests still in flight, such as canceled block
>       * jobs whose AIO context has not been polled yet */
> @@ -2174,26 +2173,6 @@ void bdrv_close_all(void)
>  
>      blk_remove_all_bs();
>      blockdev_close_all_bdrv_states();
> -
> -    /* Cancel all block jobs */
> -    while (!QTAILQ_EMPTY(&all_bdrv_states)) {
> -        QTAILQ_FOREACH(bs, &all_bdrv_states, bs_list) {
> -            aio_context = bdrv_get_aio_context(bs);
> -
> -            aio_context_acquire(aio_context);
> -            if (bs->job) {
> -                block_job_cancel_sync(bs->job);
> -                aio_context_release(aio_context);
> -                break;
> -            }
> -            aio_context_release(aio_context);
> -        }
> -
> -        /* All the remaining BlockDriverStates are referenced directly or
> -         * indirectly from block jobs, so there needs to be at least one BDS
> -         * directly used by a block job */
> -        assert(bs);
> -    }
>  }

You could add an assert(QTAILQ_EMPTY(&all_bdrv_states)) as it was
suggested some days ago.

The rest looks good.

Reviewed-by: Alberto Garcia <address@hidden>

Berto



reply via email to

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