In QEMU master, attempting to read a cached block from a HTTP (or otherwise) mounted ISO causes an assert to be triggered, killing the entire QEMU process. It looks like this:
hw/ide/pci.c:314: bmdma_cmd_writeb: Assertion `bm->bus->dma->aiocb == ((void *)0)' failed. The following two patches add flush capability to the curl backend, and avoid triggering the assert by finishing the AIOCB in a QEMUBH callback, rather than directly in curl_aio_readv().