On Fri, Feb 05, 2021 at 06:13:10PM +0800, Jiahui Cen wrote: > Enable retry action when backend's retry timer is available. It would > trigger the timer to do device specific retry action. > > Signed-off-by: Jiahui Cen <[email protected]> > Signed-off-by: Ying Fang <[email protected]> > --- > block/block-backend.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/block/block-backend.c b/block/block-backend.c > index a8bfaf6e4a..ab75cb1971 100644 > --- a/block/block-backend.c > +++ b/block/block-backend.c > @@ -1803,6 +1803,9 @@ BlockErrorAction blk_get_error_action(BlockBackend > *blk, bool is_read, > return BLOCK_ERROR_ACTION_REPORT; > case BLOCKDEV_ON_ERROR_IGNORE: > return BLOCK_ERROR_ACTION_IGNORE; > + case BLOCKDEV_ON_ERROR_RETRY: > + return (blk->retry_timer) ? > + BLOCK_ERROR_ACTION_RETRY : BLOCK_ERROR_ACTION_REPORT; > case BLOCKDEV_ON_ERROR_AUTO: > default: > abort(); > @@ -1850,6 +1853,12 @@ void blk_error_action(BlockBackend *blk, > BlockErrorAction action, > qemu_system_vmstop_request_prepare(); > send_qmp_error_event(blk, action, is_read, error); > qemu_system_vmstop_request(RUN_STATE_IO_ERROR); > + } else if (action == BLOCK_ERROR_ACTION_RETRY) { > + if (!blk->quiesce_counter) { > + timer_mod(blk->retry_timer, > qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + > + blk->retry_interval);
QEMU should not make any guest-visible changes while the guest is stopped (vm_stop()). Please use QEMU_CLOCK_VIRTUAL so the timer does not fire while the guest is stopped. Stefan
signature.asc
Description: PGP signature
