diff options
Diffstat (limited to 'hw/ide/core.c')
| -rw-r--r-- | hw/ide/core.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c index 93a1a689c4..56b219b504 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -493,7 +493,7 @@ void ide_sector_read(IDEState *s) } } -static void dma_buf_commit(IDEState *s, int is_write) +static void dma_buf_commit(IDEState *s) { qemu_sglist_destroy(&s->sg); } @@ -532,7 +532,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op) bdrv_iostatus_set_err(s->bs, error); } else { if (op & BM_STATUS_DMA_RETRY) { - dma_buf_commit(s, 0); + dma_buf_commit(s); ide_dma_error(s); } else { ide_rw_error(s); @@ -549,7 +549,6 @@ void ide_dma_cb(void *opaque, int ret) int n; int64_t sector_num; -handle_rw_error: if (ret < 0) { int op = BM_STATUS_DMA_RETRY; @@ -566,7 +565,7 @@ handle_rw_error: n = s->io_buffer_size >> 9; sector_num = ide_get_sector(s); if (n > 0) { - dma_buf_commit(s, ide_cmd_is_read(s)); + dma_buf_commit(s); sector_num += n; ide_set_sector(s, sector_num); s->nsector -= n; @@ -608,11 +607,6 @@ handle_rw_error: ide_issue_trim, ide_dma_cb, s, true); break; } - - if (!s->bus->dma->aiocb) { - ret = -1; - goto handle_rw_error; - } return; eot: @@ -718,18 +712,13 @@ static void ide_flush_cb(void *opaque, int ret) void ide_flush_cache(IDEState *s) { - BlockDriverAIOCB *acb; - if (s->bs == NULL) { ide_flush_cb(s, 0); return; } bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH); - acb = bdrv_aio_flush(s->bs, ide_flush_cb, s); - if (acb == NULL) { - ide_flush_cb(s, -EIO); - } + bdrv_aio_flush(s->bs, ide_flush_cb, s); } static void ide_cfata_metadata_inquiry(IDEState *s) @@ -1000,7 +989,7 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val) printf("ide: CMD=%02x\n", val); #endif s = idebus_active_if(bus); - /* ignore commands to non existant slave */ + /* ignore commands to non existent slave */ if (s != bus->ifs && !s->bs) return; |