commit: Expose on-error option in QMP

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 <kwolf@redhat.com>
Message-Id: <20200214200812.28180-7-kwolf@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Kevin Wolf 2020-02-14 21:08:11 +01:00
parent 9ad1e79f3f
commit 8faad1c7fb
2 changed files with 8 additions and 4 deletions

View File

@ -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_top, const char *top,
bool has_backing_file, const char *backing_file, bool has_backing_file, const char *backing_file,
bool has_speed, int64_t speed, 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_filter_node_name, const char *filter_node_name,
bool has_auto_finalize, bool auto_finalize, bool has_auto_finalize, bool auto_finalize,
bool has_auto_dismiss, bool auto_dismiss, 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; BlockDriverState *base_bs, *top_bs;
AioContext *aio_context; AioContext *aio_context;
Error *local_err = NULL; 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; int job_flags = JOB_DEFAULT;
if (!has_speed) { if (!has_speed) {
speed = 0; speed = 0;
} }
if (!has_on_error) {
on_error = BLOCKDEV_ON_ERROR_REPORT;
}
if (!has_filter_node_name) { if (!has_filter_node_name) {
filter_node_name = NULL; filter_node_name = NULL;
} }

View File

@ -1658,6 +1658,9 @@
# #
# @speed: the maximum speed, in bytes per second # @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-node-name: the node name that should be assigned to the
# filter driver that the commit job inserts into the graph # filter driver that the commit job inserts into the graph
# above @top. If this option is not given, a node name is # above @top. If this option is not given, a node name is
@ -1694,6 +1697,7 @@
'data': { '*job-id': 'str', 'device': 'str', '*base-node': 'str', 'data': { '*job-id': 'str', 'device': 'str', '*base-node': 'str',
'*base': 'str', '*top-node': 'str', '*top': 'str', '*base': 'str', '*top-node': 'str', '*top': 'str',
'*backing-file': 'str', '*speed': 'int', '*backing-file': 'str', '*speed': 'int',
'*on-error': 'BlockdevOnError',
'*filter-node-name': 'str', '*filter-node-name': 'str',
'*auto-finalize': 'bool', '*auto-dismiss': 'bool' } } '*auto-finalize': 'bool', '*auto-dismiss': 'bool' } }