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 <[email protected]>
Berto