Whilst you have patches in progress for the queue draining issue with the IO throttling code which triggers the assert()s in the ide driver, I thought I should report a second bug I've seen. I'm not sure whether it's related, but none of the patch series posted so far appear to fix or affect it.
I find that if I start a guest booting linux using extlinux and set a bytes-per-second throttle value less than about 4MB/s, qemu tends to lock up completely while the bootloader is loading the kernel. For example, there's a tiny 10MB ext4 filesystem gzipped up at http://cdw.me.uk/tmp/test.img.gz which just contains extlinux and a kernel. If you run a VM with qemu HEAD as qemu -m 1024 -vnc :1 -drive if=none,id=ide.0.0,format=raw,cache=none,file=test.img,bps=10000000 -device ide-drive,bus=ide.0,unit=0,bootindex=1,drive=ide.0.0 -monitor stdio and watch on VNC, you'll see it hangs whilst loading the kernel. Once this has happened, no further interaction with the monitor is possible, and the VNC socket becomes completely unresponsive. This happens about half of the time with bps set as high as 2*1024*1024. I first saw this with the version of the block throttling patches I'd back-ported on top of qemu-kvm 1.0, but have checked that the problem is still present in HEAD as of this afternoon [361dea401f52]. Best wishes, Chris.