79c4324644
Change-Id: I2d302dda68298877c65c99147f5bf22186a59aac
44 lines
1.7 KiB
Diff
44 lines
1.7 KiB
Diff
From 2e1c75e5a0339d2bf417e5a4437d8e627a303286 Mon Sep 17 00:00:00 2001
|
|
From: Jiahui Cen <cenjiahui@huawei.com>
|
|
Date: Thu, 21 Jan 2021 15:46:48 +0800
|
|
Subject: [PATCH 4/7] block-backend: Enable retry action on errors
|
|
|
|
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 <cenjiahui(a)huawei.com>
|
|
Signed-off-by: Ying Fang <fangying1(a)huawei.com>
|
|
Signed-off-by: Alex Chen <alex.chen@huawei.com>
|
|
---
|
|
block/block-backend.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/block/block-backend.c b/block/block-backend.c
|
|
index 24003adf0b..5a016d32fa 100644
|
|
--- a/block/block-backend.c
|
|
+++ b/block/block-backend.c
|
|
@@ -1793,6 +1793,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();
|
|
@@ -1840,6 +1843,10 @@ 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) {
|
|
+ timer_mod(blk->retry_timer, qemu_clock_get_ms(QEMU_CLOCK_REALTIME) +
|
|
+ blk->retry_interval);
|
|
+ send_qmp_error_event(blk, action, is_read, error);
|
|
} else {
|
|
send_qmp_error_event(blk, action, is_read, error);
|
|
}
|
|
--
|
|
2.27.0
|
|
|