> aio_poll() must return true if any work is still pending, even if it didn't > make > progress, so that qemu_aio_wait() doesn't return too early. > The possibility of returning early occasionally lead to a failed assertion in > bdrv_drain_all(), when some in-flight request was missed and the function > didn't really drain all requests.
I still have problem with bdrv_drain_all() and my backup block job. If I reset/suspend/resume/ the VM during a backup job run I get: block.c:1221: bdrv_drain_all: Assertion `((&bs->tracked_requests)->lh_first == ((void *)0))' failed. Aborted I am not 100% sure, but I think a simple qemu_aio_wait() is not enough to ensure that a copy-on-write action has finished. Any idea how to solve that problem?