mirror of https://gitee.com/openkylin/qemu.git
block: Rename bdrv_mon_event() & BlockMonEventAction
They are QMP events, not monitor events. Rename them accordingly. Also, move bdrv_emit_qmp_error_event() up in the file. A new event will be added soon and it's good to have them next each other. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Acked-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
235fe3bfd4
commit
329c0a48a9
58
block.c
58
block.c
|
@ -943,6 +943,35 @@ void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops,
|
|||
}
|
||||
}
|
||||
|
||||
void bdrv_emit_qmp_error_event(const BlockDriverState *bdrv,
|
||||
BlockQMPEventAction action, int is_read)
|
||||
{
|
||||
QObject *data;
|
||||
const char *action_str;
|
||||
|
||||
switch (action) {
|
||||
case BDRV_ACTION_REPORT:
|
||||
action_str = "report";
|
||||
break;
|
||||
case BDRV_ACTION_IGNORE:
|
||||
action_str = "ignore";
|
||||
break;
|
||||
case BDRV_ACTION_STOP:
|
||||
action_str = "stop";
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
data = qobject_from_jsonf("{ 'device': %s, 'action': %s, 'operation': %s }",
|
||||
bdrv->device_name,
|
||||
action_str,
|
||||
is_read ? "read" : "write");
|
||||
monitor_protocol_event(QEVENT_BLOCK_IO_ERROR, data);
|
||||
|
||||
qobject_decref(data);
|
||||
}
|
||||
|
||||
static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load)
|
||||
{
|
||||
if (bs->dev_ops && bs->dev_ops->change_media_cb) {
|
||||
|
@ -2293,35 +2322,6 @@ int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
|
|||
return data.ret;
|
||||
}
|
||||
|
||||
void bdrv_mon_event(const BlockDriverState *bdrv,
|
||||
BlockMonEventAction action, int is_read)
|
||||
{
|
||||
QObject *data;
|
||||
const char *action_str;
|
||||
|
||||
switch (action) {
|
||||
case BDRV_ACTION_REPORT:
|
||||
action_str = "report";
|
||||
break;
|
||||
case BDRV_ACTION_IGNORE:
|
||||
action_str = "ignore";
|
||||
break;
|
||||
case BDRV_ACTION_STOP:
|
||||
action_str = "stop";
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
data = qobject_from_jsonf("{ 'device': %s, 'action': %s, 'operation': %s }",
|
||||
bdrv->device_name,
|
||||
action_str,
|
||||
is_read ? "read" : "write");
|
||||
monitor_protocol_event(QEVENT_BLOCK_IO_ERROR, data);
|
||||
|
||||
qobject_decref(data);
|
||||
}
|
||||
|
||||
BlockInfoList *qmp_query_block(Error **errp)
|
||||
{
|
||||
BlockInfoList *head = NULL, *cur_item = NULL;
|
||||
|
|
6
block.h
6
block.h
|
@ -85,15 +85,15 @@ typedef enum {
|
|||
|
||||
typedef enum {
|
||||
BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP
|
||||
} BlockMonEventAction;
|
||||
} BlockQMPEventAction;
|
||||
|
||||
void bdrv_iostatus_enable(BlockDriverState *bs);
|
||||
void bdrv_iostatus_reset(BlockDriverState *bs);
|
||||
void bdrv_iostatus_disable(BlockDriverState *bs);
|
||||
bool bdrv_iostatus_is_enabled(const BlockDriverState *bs);
|
||||
void bdrv_iostatus_set_err(BlockDriverState *bs, int error);
|
||||
void bdrv_mon_event(const BlockDriverState *bdrv,
|
||||
BlockMonEventAction action, int is_read);
|
||||
void bdrv_emit_qmp_error_event(const BlockDriverState *bdrv,
|
||||
BlockQMPEventAction action, int is_read);
|
||||
void bdrv_info_print(Monitor *mon, const QObject *data);
|
||||
void bdrv_info(Monitor *mon, QObject **ret_data);
|
||||
void bdrv_stats_print(Monitor *mon, const QObject *data);
|
||||
|
|
|
@ -519,7 +519,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op)
|
|||
BlockErrorAction action = bdrv_get_on_error(s->bs, is_read);
|
||||
|
||||
if (action == BLOCK_ERR_IGNORE) {
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_IGNORE, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_IGNORE, is_read);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -527,7 +527,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op)
|
|||
|| action == BLOCK_ERR_STOP_ANY) {
|
||||
s->bus->dma->ops->set_unit(s->bus->dma, s->unit);
|
||||
s->bus->error_status = op;
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_STOP, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_STOP, is_read);
|
||||
vm_stop(RUN_STATE_IO_ERROR);
|
||||
bdrv_iostatus_set_err(s->bs, error);
|
||||
} else {
|
||||
|
@ -537,7 +537,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op)
|
|||
} else {
|
||||
ide_rw_error(s);
|
||||
}
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_REPORT, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_REPORT, is_read);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -233,14 +233,14 @@ static int scsi_handle_rw_error(SCSIDiskReq *r, int error)
|
|||
BlockErrorAction action = bdrv_get_on_error(s->qdev.conf.bs, is_read);
|
||||
|
||||
if (action == BLOCK_ERR_IGNORE) {
|
||||
bdrv_mon_event(s->qdev.conf.bs, BDRV_ACTION_IGNORE, is_read);
|
||||
bdrv_emit_qmp_error_event(s->qdev.conf.bs, BDRV_ACTION_IGNORE, is_read);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((error == ENOSPC && action == BLOCK_ERR_STOP_ENOSPC)
|
||||
|| action == BLOCK_ERR_STOP_ANY) {
|
||||
|
||||
bdrv_mon_event(s->qdev.conf.bs, BDRV_ACTION_STOP, is_read);
|
||||
bdrv_emit_qmp_error_event(s->qdev.conf.bs, BDRV_ACTION_STOP, is_read);
|
||||
vm_stop(RUN_STATE_IO_ERROR);
|
||||
bdrv_iostatus_set_err(s->qdev.conf.bs, error);
|
||||
scsi_req_retry(&r->req);
|
||||
|
@ -259,7 +259,7 @@ static int scsi_handle_rw_error(SCSIDiskReq *r, int error)
|
|||
scsi_check_condition(r, SENSE_CODE(IO_ERROR));
|
||||
break;
|
||||
}
|
||||
bdrv_mon_event(s->qdev.conf.bs, BDRV_ACTION_REPORT, is_read);
|
||||
bdrv_emit_qmp_error_event(s->qdev.conf.bs, BDRV_ACTION_REPORT, is_read);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error,
|
|||
VirtIOBlock *s = req->dev;
|
||||
|
||||
if (action == BLOCK_ERR_IGNORE) {
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_IGNORE, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_IGNORE, is_read);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -77,14 +77,14 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error,
|
|||
|| action == BLOCK_ERR_STOP_ANY) {
|
||||
req->next = s->rq;
|
||||
s->rq = req;
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_STOP, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_STOP, is_read);
|
||||
vm_stop(RUN_STATE_IO_ERROR);
|
||||
bdrv_iostatus_set_err(s->bs, error);
|
||||
} else {
|
||||
virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
|
||||
bdrv_acct_done(s->bs, &req->acct);
|
||||
g_free(req);
|
||||
bdrv_mon_event(s->bs, BDRV_ACTION_REPORT, is_read);
|
||||
bdrv_emit_qmp_error_event(s->bs, BDRV_ACTION_REPORT, is_read);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
Loading…
Reference in New Issue