@@ -473,6 +473,7 @@ void ide_sector_read(IDEState *s)
if (n > s->req_nb_sectors)
n = s->req_nb_sectors;
ret = bdrv_read(s->bs, sector_num, s->io_buffer, n);
+ bdrv_iostatus_update(s->bs, ret);
if (ret != 0) {
if (ide_handle_rw_error(s, -ret,
BM_STATUS_PIO_RETRY | BM_STATUS_RETRY_READ))
@@ -544,6 +545,7 @@ void ide_dma_cb(void *opaque, int ret)
int64_t sector_num;
handle_rw_error:
+ bdrv_iostatus_update(s->bs, ret);
if (ret < 0) {
int op = BM_STATUS_DMA_RETRY;
@@ -642,6 +644,7 @@ void ide_sector_write(IDEState *s)
if (n > s->req_nb_sectors)
n = s->req_nb_sectors;
ret = bdrv_write(s->bs, sector_num, s->io_buffer, n);
+ bdrv_iostatus_update(s->bs, ret);
if (ret != 0) {
if (ide_handle_rw_error(s, -ret, BM_STATUS_PIO_RETRY))
@@ -678,6 +681,7 @@ static void ide_flush_cb(void *opaque, int ret)
{
IDEState *s = opaque;
+ bdrv_iostatus_update(s->bs, ret);
if (ret < 0) {
/* XXX: What sector number to set here? */
if (ide_handle_rw_error(s, -ret, BM_STATUS_RETRY_FLUSH)) {
@@ -1749,6 +1753,7 @@ int ide_init_drive(IDEState *s, BlockDriverState *bs, IDEDriveKind kind,
}
ide_reset(s);
+ bdrv_enable_iostatus(bs);
bdrv_set_removable(bs, s->drive_kind == IDE_CD);
return 0;
}
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> --- hw/ide/core.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)