[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 7/8] QMP: query-status: Add 'io-status' key
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 7/8] QMP: query-status: Add 'io-status' key |
Date: |
Tue, 12 Jul 2011 09:47:19 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
Luiz Capitulino <address@hidden> writes:
> Contains the last I/O status for the given device. Currently this is
> only supported by ide, scsi and virtio block devices.
>
> Signed-off-by: Luiz Capitulino <address@hidden>
> ---
> block.c | 15 ++++++++++++++-
> block.h | 2 +-
> qmp-commands.hx | 6 ++++++
> 3 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/block.c b/block.c
> index cc0a34e..28df3d8 100644
> --- a/block.c
> +++ b/block.c
> @@ -1720,6 +1720,12 @@ void bdrv_info_print(Monitor *mon, const QObject *data)
> qlist_iter(qobject_to_qlist(data), bdrv_print_dict, mon);
> }
>
> +static const char *const io_status_name[BDRV_IOS_MAX] = {
> + [BDRV_IOS_OK] = "ok",
> + [BDRV_IOS_FAILED] = "failed",
> + [BDRV_IOS_ENOSPC] = "nospace",
> +};
> +
> void bdrv_info(Monitor *mon, QObject **ret_data)
> {
> QList *bs_list;
> @@ -1729,15 +1735,16 @@ void bdrv_info(Monitor *mon, QObject **ret_data)
>
> QTAILQ_FOREACH(bs, &bdrv_states, list) {
> QObject *bs_obj;
> + QDict *bs_dict;
>
> bs_obj = qobject_from_jsonf("{ 'device': %s, 'type': 'unknown', "
> "'removable': %i, 'locked': %i }",
> bs->device_name, bs->removable,
> bs->locked);
> + bs_dict = qobject_to_qdict(bs_obj);
>
> if (bs->drv) {
> QObject *obj;
> - QDict *bs_dict = qobject_to_qdict(bs_obj);
>
> obj = qobject_from_jsonf("{ 'file': %s, 'ro': %i, 'drv': %s, "
> "'encrypted': %i }",
> @@ -1752,6 +1759,12 @@ void bdrv_info(Monitor *mon, QObject **ret_data)
>
> qdict_put_obj(bs_dict, "inserted", obj);
> }
> +
> + if (bs->iostatus_enabled) {
> + qdict_put(bs_dict, "io-status",
> + qstring_from_str(io_status_name[bs->iostatus]));
> + }
> +
> qlist_append_obj(bs_list, bs_obj);
> }
>
> diff --git a/block.h b/block.h
> index 0dca1bb..0141fe6 100644
> --- a/block.h
> +++ b/block.h
> @@ -51,7 +51,7 @@ typedef enum {
> } BlockMonEventAction;
>
> typedef enum {
> - BDRV_IOS_OK, BDRV_IOS_FAILED, BDRV_IOS_ENOSPC
> + BDRV_IOS_OK, BDRV_IOS_FAILED, BDRV_IOS_ENOSPC, BDRV_IOS_MAX
> } BlockIOStatus;
>
> void bdrv_iostatus_update(BlockDriverState *bs, int error);
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 6b8eb0a..1746b6d 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -1082,6 +1082,9 @@ Each json-object contain the following:
> "tftp", "vdi", "vmdk", "vpc", "vvfat"
> - "backing_file": backing file name (json-string, optional)
> - "encrypted": true if encrypted, false otherwise (json-bool)
> +- "io-status": last executed I/O operation status, only present if the device
> + supports it (json_string, optional)
> + - Possible values: "ok", "failed", "nospace"
>
> Example:
>
> @@ -1089,6 +1092,7 @@ Example:
> <- {
> "return":[
> {
> + "io-status": "ok",
> "device":"ide0-hd0",
> "locked":false,
> "removable":false,
> @@ -1101,12 +1105,14 @@ Example:
> "type":"unknown"
> },
> {
> + "io-status": "ok",
> "device":"ide1-cd0",
> "locked":false,
> "removable":true,
> "type":"unknown"
> },
> {
> + "io-status": "ok",
> "device":"floppy0",
> "locked":false,
> "removable":true,
floppy doesn't support I/O status, yet the example shows "io-status":
"ok". Are you sure it's correct?
[Qemu-devel] [PATCH 6/8] scsi: Support I/O status, Luiz Capitulino, 2011/07/05
[Qemu-devel] [PATCH 4/8] ide: Support I/O status, Luiz Capitulino, 2011/07/05
[Qemu-devel] [PATCH 7/8] QMP: query-status: Add 'io-status' key, Luiz Capitulino, 2011/07/05
- Re: [Qemu-devel] [PATCH 7/8] QMP: query-status: Add 'io-status' key,
Markus Armbruster <=
[Qemu-devel] [PATCH 5/8] virtio: Support I/O status, Luiz Capitulino, 2011/07/05
[Qemu-devel] [PATCH 8/8] HMP: Print 'io-status' information, Luiz Capitulino, 2011/07/05
Re: [Qemu-devel] [PATCH v1 0/8]: QMP: Thin provisioning support, Luiz Capitulino, 2011/07/11