[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [PATCH] block-backend: Preserve AioContext of root acr
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-stable] [PATCH] block-backend: Preserve AioContext of root across medium change |
Date: |
Fri, 23 Sep 2016 14:11:24 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 23/09/2016 12:58, Fam Zheng wrote:
> This is nop for non-dataplane case, but it prevents crash
> (virtio_scsi_ctx_check assertion failure) when a scsi-cd change
> operation happens on a virtio-scsi dataplane device.
>
> Cc: address@hidden
> Signed-off-by: Fam Zheng <address@hidden>
> ---
> block/block-backend.c | 7 +++++++
> include/block/block_int.h | 1 +
> 2 files changed, 8 insertions(+)
>
> diff --git a/block/block-backend.c b/block/block-backend.c
> index d1349d9..c2cae9a 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -1570,6 +1570,7 @@ void blk_update_root_state(BlockBackend *blk)
> blk->root_state.open_flags = blk->root->bs->open_flags;
> blk->root_state.read_only = blk->root->bs->read_only;
> blk->root_state.detect_zeroes = blk->root->bs->detect_zeroes;
> + blk->root_state.aio_context = blk->root->bs->aio_context;
> }
>
> /*
> @@ -1579,7 +1580,13 @@ void blk_update_root_state(BlockBackend *blk)
> */
> void blk_apply_root_state(BlockBackend *blk, BlockDriverState *bs)
> {
> + AioContext *ctx = blk->root_state.aio_context;
> bs->detect_zeroes = blk->root_state.detect_zeroes;
> + if (ctx && ctx != qemu_get_aio_context()) {
> + aio_context_acquire(ctx);
> + bdrv_set_aio_context(bs, ctx);
> + aio_context_release(ctx);
> + }
> }
>
> /*
> diff --git a/include/block/block_int.h b/include/block/block_int.h
> index ef3c047..23c64d2 100644
> --- a/include/block/block_int.h
> +++ b/include/block/block_int.h
> @@ -534,6 +534,7 @@ struct BlockBackendRootState {
> int open_flags;
> bool read_only;
> BlockdevDetectZeroesOptions detect_zeroes;
> + AioContext *aio_context;
> };
>
> typedef enum BlockMirrorBackingMode {
>
Looks good.
I look forward to when we can drop bdrv_set_aio_context altogether...
It's only 70 patches away! :)
Paolo