mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
qapi event: convert BLOCK_IMAGE_CORRUPTED
Signed-off-by: Wenchao Xia <wenchaoqemu@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
5a2d2cbd88
commit
c120f0fa14
@ -27,6 +27,7 @@
|
||||
#include "block/qcow2.h"
|
||||
#include "qemu/range.h"
|
||||
#include "qapi/qmp/types.h"
|
||||
#include "qapi-event.h"
|
||||
|
||||
static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size);
|
||||
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,
|
||||
} else if (ret > 0) {
|
||||
int metadata_ol_bitnr = ffs(ret) - 1;
|
||||
char *message;
|
||||
QObject *data;
|
||||
|
||||
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,
|
||||
metadata_ol_names[metadata_ol_bitnr]);
|
||||
message = g_strdup_printf("Prevented %s overwrite",
|
||||
metadata_ol_names[metadata_ol_bitnr]);
|
||||
data = qobject_from_jsonf("{ 'device': %s, 'msg': %s, 'offset': %"
|
||||
PRId64 ", 'size': %" PRId64 " }", bs->device_name, message,
|
||||
offset, size);
|
||||
monitor_protocol_event(QEVENT_BLOCK_IMAGE_CORRUPTED, data);
|
||||
qapi_event_send_block_image_corrupted(bdrv_get_device_name(bs),
|
||||
message,
|
||||
true,
|
||||
offset,
|
||||
true,
|
||||
size,
|
||||
&error_abort);
|
||||
g_free(message);
|
||||
qobject_decref(data);
|
||||
|
||||
qcow2_mark_corrupt(bs);
|
||||
bs->drv = NULL; /* make BDS unusable */
|
||||
|
@ -28,28 +28,6 @@ Example:
|
||||
"data": { "actual": 944766976 },
|
||||
"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
|
||||
-------------------
|
||||
|
||||
|
@ -1428,6 +1428,30 @@
|
||||
'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
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user