mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
async: Remove AsyncContext
The purpose of AsyncContexts was to protect qcow and qcow2 against reentrancy during an emulated bdrv_read/write (which includes a qemu_aio_wait() call and can run AIO callbacks of different requests if it weren't for AsyncContexts). Now both qcow and qcow2 are protected by CoMutexes and AsyncContexts can be removed. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
52b8eb6013
commit
384acbf46b
7 changed files with 11 additions and 169 deletions
|
@ -49,8 +49,6 @@ struct qemu_paiocb {
|
|||
ssize_t ret;
|
||||
int active;
|
||||
struct qemu_paiocb *next;
|
||||
|
||||
int async_context_id;
|
||||
};
|
||||
|
||||
typedef struct PosixAioState {
|
||||
|
@ -420,7 +418,6 @@ static int posix_aio_process_queue(void *opaque)
|
|||
struct qemu_paiocb *acb, **pacb;
|
||||
int ret;
|
||||
int result = 0;
|
||||
int async_context_id = get_async_context_id();
|
||||
|
||||
for(;;) {
|
||||
pacb = &s->first_aio;
|
||||
|
@ -429,12 +426,6 @@ static int posix_aio_process_queue(void *opaque)
|
|||
if (!acb)
|
||||
return result;
|
||||
|
||||
/* we're only interested in requests in the right context */
|
||||
if (acb->async_context_id != async_context_id) {
|
||||
pacb = &acb->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = qemu_paio_error(acb);
|
||||
if (ret == ECANCELED) {
|
||||
/* remove the request */
|
||||
|
@ -575,7 +566,6 @@ BlockDriverAIOCB *paio_submit(BlockDriverState *bs, int fd,
|
|||
acb->aio_type = type;
|
||||
acb->aio_fildes = fd;
|
||||
acb->ev_signo = SIGUSR2;
|
||||
acb->async_context_id = get_async_context_id();
|
||||
|
||||
if (qiov) {
|
||||
acb->aio_iov = qiov->iov;
|
||||
|
@ -604,7 +594,6 @@ BlockDriverAIOCB *paio_ioctl(BlockDriverState *bs, int fd,
|
|||
acb->aio_type = QEMU_AIO_IOCTL;
|
||||
acb->aio_fildes = fd;
|
||||
acb->ev_signo = SIGUSR2;
|
||||
acb->async_context_id = get_async_context_id();
|
||||
acb->aio_offset = 0;
|
||||
acb->aio_ioctl_buf = buf;
|
||||
acb->aio_ioctl_cmd = req;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue