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 "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,
|
||||||
} 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,
|
||||||
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:
|
||||||
"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 @@
|
||||||
'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
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue