Skip to content

Commit

Permalink
io: Remove redundant read/write_coroutine assignments
Browse files Browse the repository at this point in the history
qio_channel_yield() now updates ioc->read_write/coroutine and calls
qio_channel_set_aio_fd_handlers(), so the code in the handlers has
become redundant and can be removed.

This does not make a difference in intermediate states because
aio_co_wake() really enters the coroutine immediately here: These
handlers are never run in coroutine context, and we're in the right
AioContext because qio_channel_attach_aio_context() asserts that the
handlers are inactive.

To make these conditions more obvious, assert the right AioContext.

Suggested-by: Paolo Bonzini <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
  • Loading branch information
kevmw committed Feb 25, 2019
1 parent 6886cea commit 2a239e6
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions io/channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,15 +400,14 @@ off_t qio_channel_io_seek(QIOChannel *ioc,
}


static void qio_channel_set_aio_fd_handlers(QIOChannel *ioc);

static void qio_channel_restart_read(void *opaque)
{
QIOChannel *ioc = opaque;
Coroutine *co = ioc->read_coroutine;

ioc->read_coroutine = NULL;
qio_channel_set_aio_fd_handlers(ioc);
/* Assert that aio_co_wake() reenters the coroutine directly */
assert(qemu_get_current_aio_context() ==
qemu_coroutine_get_aio_context(co));
aio_co_wake(co);
}

Expand All @@ -417,8 +416,9 @@ static void qio_channel_restart_write(void *opaque)
QIOChannel *ioc = opaque;
Coroutine *co = ioc->write_coroutine;

ioc->write_coroutine = NULL;
qio_channel_set_aio_fd_handlers(ioc);
/* Assert that aio_co_wake() reenters the coroutine directly */
assert(qemu_get_current_aio_context() ==
qemu_coroutine_get_aio_context(co));
aio_co_wake(co);
}

Expand Down

0 comments on commit 2a239e6

Please sign in to comment.