Anthony Liguori wrote:
For reasons that I do not fully understand, bdrv_aio_read() does
not return immediately, but instead it calls scsi_read_data()
recursively.
This bothers me. bdrv_aio_read() should never immediately invoke the
callback to prevent exactly this sort of problem. Perhaps this was a
bug that has since been fixed? Is this still reproducible?
qcow2 metadata is synchronous, and if the disk is empty, there will be
no data I/O, so bdrv_aio_read() will never be invoked.
Maybe we should fix this in qcow2 (and the other block formats) by
scheduling a BH.