qemu-e2k/hw/ide
Stefan Hajnoczi bef0fd5958 ide: convert ide_sector_read() to asynchronous I/O
The IDE PIO interface currently uses bdrv_read() to perform reads
synchronously.  Synchronous I/O in the vcpu thread is bad because it
prevents the guest from executing code - it makes the guest
unresponsive.

This patch converts IDE PIO to use bdrv_aio_readv().  We simply need to
use the BUSY_STAT status so the guest knows to wait while we are busy.

The only external user of ide_sector_read() is restart behavior on I/O
errors and it is not affected by this change.  We still need to restart
I/O in the same way.

Migration is also unaffected if I understand the code correctly.  We
continue to use the same transfer function and the BUSY_STAT status
should never be migrated since we flush I/O before migrating device
state.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Tested-by: Richard Davies <richard@arachsys.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2012-04-19 16:03:27 +02:00
..
ahci.c Add missing const attributes for MemoryRegionOps 2012-03-11 11:40:15 +00:00
ahci.h ahci: add port I/O index-data pair 2011-09-21 14:32:20 +02:00
atapi.c block: Don't call bdrv_eject() if the tray state didn't change 2012-02-22 17:23:21 -02:00
cmd646.c Add missing const attributes for MemoryRegionOps 2012-03-11 11:40:15 +00:00
core.c ide: convert ide_sector_read() to asynchronous I/O 2012-04-19 16:03:27 +02:00
ich.c qom: Unify type registration 2012-02-15 09:39:21 -06:00
internal.h ide: convert ide_sector_read() to asynchronous I/O 2012-04-19 16:03:27 +02:00
isa.c qom: Unify type registration 2012-02-15 09:39:21 -06:00
macio.c Use DMADirection type for dma_bdrv_io 2012-04-05 14:54:40 +02:00
microdrive.c hw: Trim superfluous #include "block_int.h" 2011-09-12 15:17:21 +02:00
mmio.c ide/mmio: convert to memory API 2011-11-24 18:31:59 +02:00
pci.c ide: fix compilation errors when DEBUG_IDE is set 2012-02-10 10:44:52 +00:00
pci.h ide: convert to memory API 2011-08-08 10:15:54 -05:00
piix.c Add missing const attributes for MemoryRegionOps 2012-03-11 11:40:15 +00:00
qdev.c ide: Adds wwn=hex qdev option 2012-04-05 14:54:39 +02:00
via.c Add missing const attributes for MemoryRegionOps 2012-03-11 11:40:15 +00:00