提交 329c0a48 编写于 作者: L Luiz Capitulino

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: NLuiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
Acked-by: NKevin Wolf <kwolf@redhat.com>
上级 235fe3bf
...@@ -943,6 +943,35 @@ void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops, ...@@ -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) static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load)
{ {
if (bs->dev_ops && bs->dev_ops->change_media_cb) { 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, ...@@ -2293,35 +2322,6 @@ int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
return data.ret; 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 *qmp_query_block(Error **errp)
{ {
BlockInfoList *head = NULL, *cur_item = NULL; BlockInfoList *head = NULL, *cur_item = NULL;
......
...@@ -85,15 +85,15 @@ typedef enum { ...@@ -85,15 +85,15 @@ typedef enum {
typedef enum { typedef enum {
BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP BDRV_ACTION_REPORT, BDRV_ACTION_IGNORE, BDRV_ACTION_STOP
} BlockMonEventAction; } BlockQMPEventAction;
void bdrv_iostatus_enable(BlockDriverState *bs); void bdrv_iostatus_enable(BlockDriverState *bs);
void bdrv_iostatus_reset(BlockDriverState *bs); void bdrv_iostatus_reset(BlockDriverState *bs);
void bdrv_iostatus_disable(BlockDriverState *bs); void bdrv_iostatus_disable(BlockDriverState *bs);
bool bdrv_iostatus_is_enabled(const BlockDriverState *bs); bool bdrv_iostatus_is_enabled(const BlockDriverState *bs);
void bdrv_iostatus_set_err(BlockDriverState *bs, int error); void bdrv_iostatus_set_err(BlockDriverState *bs, int error);
void bdrv_mon_event(const BlockDriverState *bdrv, void bdrv_emit_qmp_error_event(const BlockDriverState *bdrv,
BlockMonEventAction action, int is_read); BlockQMPEventAction action, int is_read);
void bdrv_info_print(Monitor *mon, const QObject *data); void bdrv_info_print(Monitor *mon, const QObject *data);
void bdrv_info(Monitor *mon, QObject **ret_data); void bdrv_info(Monitor *mon, QObject **ret_data);
void bdrv_stats_print(Monitor *mon, const QObject *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) ...@@ -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); BlockErrorAction action = bdrv_get_on_error(s->bs, is_read);
if (action == BLOCK_ERR_IGNORE) { 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; return 0;
} }
...@@ -527,7 +527,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op) ...@@ -527,7 +527,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op)
|| action == BLOCK_ERR_STOP_ANY) { || action == BLOCK_ERR_STOP_ANY) {
s->bus->dma->ops->set_unit(s->bus->dma, s->unit); s->bus->dma->ops->set_unit(s->bus->dma, s->unit);
s->bus->error_status = op; 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); vm_stop(RUN_STATE_IO_ERROR);
bdrv_iostatus_set_err(s->bs, error); bdrv_iostatus_set_err(s->bs, error);
} else { } else {
...@@ -537,7 +537,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op) ...@@ -537,7 +537,7 @@ static int ide_handle_rw_error(IDEState *s, int error, int op)
} else { } else {
ide_rw_error(s); 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; return 1;
......
...@@ -233,14 +233,14 @@ static int scsi_handle_rw_error(SCSIDiskReq *r, int error) ...@@ -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); BlockErrorAction action = bdrv_get_on_error(s->qdev.conf.bs, is_read);
if (action == BLOCK_ERR_IGNORE) { 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; return 0;
} }
if ((error == ENOSPC && action == BLOCK_ERR_STOP_ENOSPC) if ((error == ENOSPC && action == BLOCK_ERR_STOP_ENOSPC)
|| action == BLOCK_ERR_STOP_ANY) { || 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); vm_stop(RUN_STATE_IO_ERROR);
bdrv_iostatus_set_err(s->qdev.conf.bs, error); bdrv_iostatus_set_err(s->qdev.conf.bs, error);
scsi_req_retry(&r->req); scsi_req_retry(&r->req);
...@@ -259,7 +259,7 @@ static int scsi_handle_rw_error(SCSIDiskReq *r, int error) ...@@ -259,7 +259,7 @@ static int scsi_handle_rw_error(SCSIDiskReq *r, int error)
scsi_check_condition(r, SENSE_CODE(IO_ERROR)); scsi_check_condition(r, SENSE_CODE(IO_ERROR));
break; 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; return 1;
} }
......
...@@ -69,7 +69,7 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error, ...@@ -69,7 +69,7 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error,
VirtIOBlock *s = req->dev; VirtIOBlock *s = req->dev;
if (action == BLOCK_ERR_IGNORE) { 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; return 0;
} }
...@@ -77,14 +77,14 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error, ...@@ -77,14 +77,14 @@ static int virtio_blk_handle_rw_error(VirtIOBlockReq *req, int error,
|| action == BLOCK_ERR_STOP_ANY) { || action == BLOCK_ERR_STOP_ANY) {
req->next = s->rq; req->next = s->rq;
s->rq = req; 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); vm_stop(RUN_STATE_IO_ERROR);
bdrv_iostatus_set_err(s->bs, error); bdrv_iostatus_set_err(s->bs, error);
} else { } else {
virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR); virtio_blk_req_complete(req, VIRTIO_BLK_S_IOERR);
bdrv_acct_done(s->bs, &req->acct); bdrv_acct_done(s->bs, &req->acct);
g_free(req); 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; return 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册