提交 c120f0fa 编写于 作者: W Wenchao Xia 提交者: Luiz Capitulino

qapi event: convert BLOCK_IMAGE_CORRUPTED

Signed-off-by: NWenchao Xia <wenchaoqemu@gmail.com>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
上级 5a2d2cbd
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "block/qcow2.h" #include "block/qcow2.h"
#include "qemu/range.h" #include "qemu/range.h"
#include "qapi/qmp/types.h" #include "qapi/qmp/types.h"
#include "qapi-event.h"
static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size); static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size);
static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs, static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
...@@ -1807,7 +1808,6 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t offset, ...@@ -1807,7 +1808,6 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t offset,
} else if (ret > 0) { } else if (ret > 0) {
int metadata_ol_bitnr = ffs(ret) - 1; int metadata_ol_bitnr = ffs(ret) - 1;
char *message; char *message;
QObject *data;
assert(metadata_ol_bitnr < QCOW2_OL_MAX_BITNR); assert(metadata_ol_bitnr < QCOW2_OL_MAX_BITNR);
...@@ -1816,12 +1816,14 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t offset, ...@@ -1816,12 +1816,14 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t offset,
metadata_ol_names[metadata_ol_bitnr]); metadata_ol_names[metadata_ol_bitnr]);
message = g_strdup_printf("Prevented %s overwrite", message = g_strdup_printf("Prevented %s overwrite",
metadata_ol_names[metadata_ol_bitnr]); metadata_ol_names[metadata_ol_bitnr]);
data = qobject_from_jsonf("{ 'device': %s, 'msg': %s, 'offset': %" qapi_event_send_block_image_corrupted(bdrv_get_device_name(bs),
PRId64 ", 'size': %" PRId64 " }", bs->device_name, message, message,
offset, size); true,
monitor_protocol_event(QEVENT_BLOCK_IMAGE_CORRUPTED, data); offset,
true,
size,
&error_abort);
g_free(message); g_free(message);
qobject_decref(data);
qcow2_mark_corrupt(bs); qcow2_mark_corrupt(bs);
bs->drv = NULL; /* make BDS unusable */ bs->drv = NULL; /* make BDS unusable */
......
...@@ -28,28 +28,6 @@ Example: ...@@ -28,28 +28,6 @@ Example:
"data": { "actual": 944766976 }, "data": { "actual": 944766976 },
"timestamp": { "seconds": 1267020223, "microseconds": 435656 } } "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
BLOCK_IMAGE_CORRUPTED
---------------------
Emitted when a disk image is being marked corrupt.
Data:
- "device": Device name (json-string)
- "msg": Informative message (e.g., reason for the corruption) (json-string)
- "offset": If the corruption resulted from an image access, this is the access
offset into the image (json-int)
- "size": If the corruption resulted from an image access, this is the access
size (json-int)
Example:
{ "event": "BLOCK_IMAGE_CORRUPTED",
"data": { "device": "ide0-hd0",
"msg": "Prevented active L1 table overwrite", "offset": 196608,
"size": 65536 },
"timestamp": { "seconds": 1378126126, "microseconds": 966463 } }
BLOCK_JOB_CANCELLED BLOCK_JOB_CANCELLED
------------------- -------------------
......
...@@ -1428,6 +1428,30 @@ ...@@ -1428,6 +1428,30 @@
'data': [ 'ignore', 'report', 'stop' ] } 'data': [ 'ignore', 'report', 'stop' ] }
##
# @BLOCK_IMAGE_CORRUPTED
#
# Emitted when a disk image is being marked corrupt
#
# @device: device name
#
# @msg: informative message for human consumption, such as the kind of
# corruption being detected
#
# @offset: #optional, if the corruption resulted from an image access, this is
# the access offset into the image
#
# @size: #optional, if the corruption resulted from an image access, this is
# the access size
#
# Since: 1.7
##
{ 'event': 'BLOCK_IMAGE_CORRUPTED',
'data': { 'device' : 'str',
'msg' : 'str',
'*offset': 'int',
'*size' : 'int' } }
## ##
# @BLOCK_IO_ERROR # @BLOCK_IO_ERROR
# #
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册