BLOCK_IO_ERROR events currently contain a "reason" string which is strerror(errno) of the error. This enhancement provides those events with the numeric errno value as well, since it is easier to parse for error type than a string.
Signed-off-by: Jack Schwartz <jack.schwa...@oracle.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com> Reviewed-by: Karl Heubaum <karl.heub...@oracle.com> --- block/block-backend.c | 2 +- qapi/block-core.json | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/block/block-backend.c b/block/block-backend.c index baef8e7..f628668 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1572,7 +1572,7 @@ static void send_qmp_error_event(BlockBackend *blk, qapi_event_send_block_io_error(blk_name(blk), bdrv_get_node_name(blk_bs(blk)), optype, action, blk_iostatus_is_enabled(blk), - error == ENOSPC, strerror(error), + error == ENOSPC, error, strerror(error), &error_abort); } diff --git a/qapi/block-core.json b/qapi/block-core.json index a8cdbc3..b7beca7 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -3660,6 +3660,11 @@ # io-status is present, please see query-block documentation # for more information (since: 2.2) # +# @errno: int describing the error cause, provided for applications. +# (Note: while most errnos are posix compliant between OSs, it +# is possible some errno values can vary among different OSs.) +# (since 2.12) +# # @reason: human readable string describing the error cause. # (This field is a debugging aid for humans, it should not # be parsed by applications) (since: 2.2) @@ -3675,14 +3680,17 @@ # "data": { "device": "ide0-hd1", # "node-name": "#block212", # "operation": "write", -# "action": "stop" }, +# "action": "stop", +# "nospace": false, +# "errno": 5, +# "reason": "Input/output error" }, # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } # ## { 'event': 'BLOCK_IO_ERROR', 'data': { 'device': 'str', 'node-name': 'str', 'operation': 'IoOperationType', 'action': 'BlockErrorAction', '*nospace': 'bool', - 'reason': 'str' } } + 'errno': 'int', 'reason': 'str' } } ## # @BLOCK_JOB_COMPLETED: -- 1.8.3.1