mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
block: Propagate AioContext change to all children
Instead of propagating any change of a BDS's AioContext only to its file and backing children and letting driver-specific code do the rest, just propagate it to all and drop the thus superfluous implementations of bdrv_{at,de}tach_aio_context() in Quorum, blkverify and VMDK. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
1f0c461b82
commit
b97511c7bc
4 changed files with 6 additions and 76 deletions
16
block.c
16
block.c
|
@ -3609,6 +3609,7 @@ AioContext *bdrv_get_aio_context(BlockDriverState *bs)
|
|||
void bdrv_detach_aio_context(BlockDriverState *bs)
|
||||
{
|
||||
BdrvAioNotifier *baf;
|
||||
BdrvChild *child;
|
||||
|
||||
if (!bs->drv) {
|
||||
return;
|
||||
|
@ -3621,11 +3622,8 @@ void bdrv_detach_aio_context(BlockDriverState *bs)
|
|||
if (bs->drv->bdrv_detach_aio_context) {
|
||||
bs->drv->bdrv_detach_aio_context(bs);
|
||||
}
|
||||
if (bs->file) {
|
||||
bdrv_detach_aio_context(bs->file->bs);
|
||||
}
|
||||
if (bs->backing) {
|
||||
bdrv_detach_aio_context(bs->backing->bs);
|
||||
QLIST_FOREACH(child, &bs->children, next) {
|
||||
bdrv_detach_aio_context(child->bs);
|
||||
}
|
||||
|
||||
bs->aio_context = NULL;
|
||||
|
@ -3635,6 +3633,7 @@ void bdrv_attach_aio_context(BlockDriverState *bs,
|
|||
AioContext *new_context)
|
||||
{
|
||||
BdrvAioNotifier *ban;
|
||||
BdrvChild *child;
|
||||
|
||||
if (!bs->drv) {
|
||||
return;
|
||||
|
@ -3642,11 +3641,8 @@ void bdrv_attach_aio_context(BlockDriverState *bs,
|
|||
|
||||
bs->aio_context = new_context;
|
||||
|
||||
if (bs->backing) {
|
||||
bdrv_attach_aio_context(bs->backing->bs, new_context);
|
||||
}
|
||||
if (bs->file) {
|
||||
bdrv_attach_aio_context(bs->file->bs, new_context);
|
||||
QLIST_FOREACH(child, &bs->children, next) {
|
||||
bdrv_attach_aio_context(child->bs, new_context);
|
||||
}
|
||||
if (bs->drv->bdrv_attach_aio_context) {
|
||||
bs->drv->bdrv_attach_aio_context(bs, new_context);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue