mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-15 07:22:46 +00:00
fix asynchronous ioctls
posix_aio_read expect aio requests to return the number of bytes requests to be successfull, so we need to fake this up for ioctls. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
e8a6aec9b5
commit
e7d54ae83c
|
@ -90,7 +90,16 @@ static size_t handle_aiocb_ioctl(struct qemu_paiocb *aiocb)
|
||||||
ret = ioctl(aiocb->aio_fildes, aiocb->aio_ioctl_cmd, aiocb->aio_ioctl_buf);
|
ret = ioctl(aiocb->aio_fildes, aiocb->aio_ioctl_cmd, aiocb->aio_ioctl_buf);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
return -errno;
|
return -errno;
|
||||||
return ret;
|
|
||||||
|
/*
|
||||||
|
* This looks weird, but the aio code only consideres a request
|
||||||
|
* successfull if it has written the number full number of bytes.
|
||||||
|
*
|
||||||
|
* Now we overload aio_nbytes as aio_ioctl_cmd for the ioctl command,
|
||||||
|
* so in fact we return the ioctl command here to make posix_aio_read()
|
||||||
|
* happy..
|
||||||
|
*/
|
||||||
|
return aiocb->aio_nbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_PREADV
|
#ifdef HAVE_PREADV
|
||||||
|
|
Loading…
Reference in a new issue