Am 23.11.2017 um 18:05 hat Deepa Srinivasan geschrieben: > blk_aio_prwv() now takes a void pointer and the coroutine functions > have been modified to cast it into QEMUIOVector if needed. It does not > use an union in BlkRwCo since this leads to code - blk_aio_prwv() > would have to write to the void pointer member, but coroutines would > sometimes read the QEMUIOVector member. Paolo also suggested not using > a union.
I don't particularly like void pointers, but I guess it's fair enough. > Note that a similar issue exists in > blk_ioctl()/blk_ioctl_entry()/blk_prw() where blk_prw() always creates > the QEMUIOVector even if blk_ioctl()/blk_ioctl_entry() does not need a > QEMUIOVector. This will need to be fixed separately to keep it > consistent with the AIO path. I don't think there is an actual problem in the blk_ioctl() path because the iov on the stack stays valid as long as the coroutine runs. AIO is different because it returns before the coroutine has terminated. Kevin