qemu/hw/ide
Evgeny Yakovlev 35f78ab469 ide: set retry_unit for PIO and FLUSH requests
The following sequence of tests discovered a problem in IDE emulation:
1. Send DMA write to IDE device 0
2. Send CMD_FLUSH_CACHE to same IDE device which will be failed by block
layer using blkdebug script in tests/ide-test:test_retry_flush

When doing DMA request ide/core.c will set s->retry_unit to s->unit in
ide_start_dma. When dma completes ide_set_inactive sets retry_unit to -1.
After that ide_flush_cache runs and fails thanks to blkdebug.
ide_flush_cb calls ide_handle_rw_error which asserts that s->retry_unit
== s->unit. But s->retry_unit is still -1 after previous DMA completion
and flush does not use anything related to retry.

This patch restricts retry unit assertion only to ops that actually use
retry logic.

Signed-off-by: Evgeny Yakovlev <eyakovlev@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1468870792-7411-3-git-send-email-den@openvz.org
CC: Kevin Wolf <kwolf@redhat.com>
CC: Max Reitz <mreitz@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Fam Zheng <famz@redhat.com>
CC: John Snow <jsnow@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
2016-07-18 18:19:01 -04:00
..
ahci.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
atapi.c atapi: Switch to byte-based block access 2016-05-12 15:22:09 +02:00
cmd646.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
core.c ide: set retry_unit for PIO and FLUSH requests 2016-07-18 18:19:01 -04:00
ich.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
isa.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
macio.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
Makefile.objs hw: make all of hw/ide/ configurable via default-configs/ 2013-04-08 18:13:12 +02:00
microdrive.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
mmio.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
pci.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
piix.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
qdev.c block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
via.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00