diff options
author | Paolo Bonzini | 2014-08-04 23:11:05 +0200 |
---|---|---|
committer | Stefan Hajnoczi | 2014-08-15 19:03:12 +0200 |
commit | 69f72a22213a6909bf4aef06133c976b508e370a (patch) | |
tree | 0289bb35578ec73e3b43f9372bf0364884f4f687 /hw/ide/core.c | |
parent | ide-test: add test for werror=stop (diff) | |
download | qemu-69f72a22213a6909bf4aef06133c976b508e370a.tar.gz qemu-69f72a22213a6909bf4aef06133c976b508e370a.tar.xz qemu-69f72a22213a6909bf4aef06133c976b508e370a.zip |
ide: stash aiocb for flushes
This ensures that operations are completed after a reset
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'hw/ide/core.c')
-rw-r--r-- | hw/ide/core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c index db191a6c3e..79985f9f49 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -831,6 +831,8 @@ static void ide_flush_cb(void *opaque, int ret) { IDEState *s = opaque; + s->pio_aiocb = NULL; + if (ret < 0) { /* XXX: What sector number to set here? */ if (ide_handle_rw_error(s, -ret, BM_STATUS_RETRY_FLUSH)) { @@ -853,7 +855,7 @@ void ide_flush_cache(IDEState *s) s->status |= BUSY_STAT; bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH); - bdrv_aio_flush(s->bs, ide_flush_cb, s); + s->pio_aiocb = bdrv_aio_flush(s->bs, ide_flush_cb, s); } static void ide_cfata_metadata_inquiry(IDEState *s) |