On 2017-09-18 08:46, Fam Zheng wrote: > On Wed, 09/13 20:19, Max Reitz wrote: >> Add a new parameter -B to qemu-io's write command. When used, qemu-io >> will not wait for the result of the operation and instead execute it in >> the background. > > Cannot aio_write be used for this purpose? Depends. I have been trained to dislike *_aio_*, so that's probably the initial reason why I didn't use it. Second, I'd have to fix aio_write before it can be used. Currently, this aborts: echo 'qemu-io drv0 "aio_write -P 0x11 0 64M"' \ | x86_64-softmmu/qemu-system-x86_64 -monitor stdio \ -blockdev node-name=drv0,driver=null-co because aio_write_done thinks it's a good idea to use qemu-io's BlockBackend -- but when qemu-io is executed through the HMP, the BlockBackend is only created for the duration of the qemu-io command (unless there already is a BB). So what I'd have to do is add a blk_ref()/blk_unref() there, but for some reason I really don't like that. So I'd probably have to give up on using -blockdev in the new iotest and would have to use -drive again. (Note: With if=none, it still aborts while doing the block accounting, and I have looked long enough into it to just decide I'd go with if=virtio instead.) So, yes, it appears I can use aio_write, together with -drive if=virtio instead of -blockdev. The remaining difference is the following: With aio_write, all writes come from the same BlockBackend, and they are really asynchronous. That's nice because it's like a guest behaves. With write -B, they come from different BBs and the BB is usually already gone when the write is completed -- or maybe destroying the BB means that everything is flushed and thus the writes are not necessarily asynchronous. That doesn't seem so nice, but this behavior made me write patch 13, so maybe it actually is a good idea to test this. So I'm a bit torn. On one hand it seems to be a good idea to use aio_write because that's already there and it's good enough to simulate a guest. But on the other hand, write -B gives a bit more funny behavior which in my opinion is always good for a test... Max