[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 6/7] commit: Expose on-error option in QMP
From: |
Kevin Wolf |
Subject: |
[PATCH 6/7] commit: Expose on-error option in QMP |
Date: |
Fri, 14 Feb 2020 21:08:11 +0100 |
Now that the error handling in the common block job is fixed, we can
expose the on-error option in QMP instead of hard-coding it as 'report'
in qmp_block_commit().
This fulfills the promise that the old comment in that function made,
even if a bit later than expected: "This will be part of the QMP
command, if/when the BlockdevOnError change for blkmirror makes it in".
Signed-off-by: Kevin Wolf <address@hidden>
---
qapi/block-core.json | 4 ++++
blockdev.c | 8 ++++----
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 395d205fa8..c69aece46e 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1659,6 +1659,9 @@
#
# @speed: the maximum speed, in bytes per second
#
+# @on-error: the action to take on an error. 'ignore' means that the request
+# should be retried. (default: report; Since: 5.0)
+#
# @filter-node-name: the node name that should be assigned to the
# filter driver that the commit job inserts into the graph
# above @top. If this option is not given, a node name is
@@ -1695,6 +1698,7 @@
'data': { '*job-id': 'str', 'device': 'str', '*base-node': 'str',
'*base': 'str', '*top-node': 'str', '*top': 'str',
'*backing-file': 'str', '*speed': 'int',
+ '*on-error': 'BlockdevOnError',
'*filter-node-name': 'str',
'*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }
diff --git a/blockdev.c b/blockdev.c
index c6a727cca9..374189a426 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3471,6 +3471,7 @@ void qmp_block_commit(bool has_job_id, const char
*job_id, const char *device,
bool has_top, const char *top,
bool has_backing_file, const char *backing_file,
bool has_speed, int64_t speed,
+ bool has_on_error, BlockdevOnError on_error,
bool has_filter_node_name, const char *filter_node_name,
bool has_auto_finalize, bool auto_finalize,
bool has_auto_dismiss, bool auto_dismiss,
@@ -3481,15 +3482,14 @@ void qmp_block_commit(bool has_job_id, const char
*job_id, const char *device,
BlockDriverState *base_bs, *top_bs;
AioContext *aio_context;
Error *local_err = NULL;
- /* This will be part of the QMP command, if/when the
- * BlockdevOnError change for blkmirror makes it in
- */
- BlockdevOnError on_error = BLOCKDEV_ON_ERROR_REPORT;
int job_flags = JOB_DEFAULT;
if (!has_speed) {
speed = 0;
}
+ if (!has_on_error) {
+ on_error = BLOCKDEV_ON_ERROR_REPORT;
+ }
if (!has_filter_node_name) {
filter_node_name = NULL;
}
--
2.20.1
- Re: [PATCH 1/7] qapi: Document meaning of 'ignore' BlockdevOnError for jobs, (continued)
- [PATCH 2/7] commit: Remove unused bytes_written, Kevin Wolf, 2020/02/14
- [PATCH 4/7] commit: Inline commit_populate(), Kevin Wolf, 2020/02/14
- [PATCH 3/7] commit: Fix argument order for block_job_error_action(), Kevin Wolf, 2020/02/14
- [PATCH 5/7] commit: Fix is_read for block_job_error_action(), Kevin Wolf, 2020/02/14
- [PATCH 6/7] commit: Expose on-error option in QMP,
Kevin Wolf <=
- [PATCH 7/7] iotests: Test error handling policies with block-commit, Kevin Wolf, 2020/02/14