[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots |
Date: |
Wed, 10 Apr 2013 17:51:52 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Wenchao Xia <address@hidden> writes:
> This interface returns info of valid internal snapshots for whole vm.
>
> Signed-off-by: Wenchao Xia <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> Reviewed-by: Kevin Wolf <address@hidden>
> ---
> block/qapi.c | 17 ++++++++++++++++
> qapi-schema.json | 14 +++++++++++++
> qmp-commands.hx | 55
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 86 insertions(+), 0 deletions(-)
>
> diff --git a/block/qapi.c b/block/qapi.c
> index 6e0c7c3..5e91ab8 100644
> --- a/block/qapi.c
> +++ b/block/qapi.c
> @@ -258,6 +258,23 @@ BlockInfo *bdrv_query_info(BlockDriverState *bs)
> return info;
> }
>
> +SnapshotInfoList *qmp_query_snapshots(Error **errp)
> +{
> + BlockDriverState *bs;
> + SnapshotInfoList *list = NULL;
> +
> + /* internal snapshot for whole vm */
> + bs = bdrv_snapshots();
> + if (!bs) {
> + error_setg(errp, "No available block device supports snapshots\n");
> + return NULL;
> + }
> +
> + bdrv_query_snapshot_info_list(bs, &list, true, errp);
> +
> + return list;
> +}
> +
> BlockInfoList *qmp_query_block(Error **errp)
> {
> BlockInfoList *head = NULL, **p_next = &head;
> diff --git a/qapi-schema.json b/qapi-schema.json
> index f629a24..225afef 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -841,6 +841,20 @@
> { 'command': 'query-block', 'returns': ['BlockInfo'] }
>
> ##
> +# @query-snapshots:
> +#
> +# Get a list of internal snapshots for the whole virtual machine. Only valid
> +# internal snapshots will be returned, inconsistent ones will be ignored
> +#
> +# Returns: a list of @SnapshotInfo describing all consistent virtual machine
> +# snapshots
> +#
> +# Since: 1.5
> +##
> +{ 'command': 'query-snapshots',
> + 'returns': ['SnapshotInfo'] }
> +
> +##
> # @BlockDeviceStats:
> #
> # Statistics of a virtual block device or a block backing device.
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 1e0e11e..6b20684 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -1765,6 +1765,61 @@ EQMP
> },
>
> SQMP
> +query-snapshots
> +---------------
> +
> +Show the internal consistent snapshot information
> +
> +Each snapshot is represented by a json-object. The returned value
> +is a json-array of all snapshots
> +
> +Each json-object contain the following:
> +
> +- "id": unique snapshot id (json-string)
> +- "name": internal snapshot name (json-string)
> +- "vm-state-size": size of the VM state in bytes (json-int)
> +- "date-sec": UTC date of the snapshot in seconds (json-int)
> +- "date-nsec": fractional part in nanoseconds to be used with
> + date-sec(json-int)
> +- "vm-clock-sec": VM clock relative to boot in seconds (json-int)
> +- "vm-clock-nsec": fractional part in nanoseconds to be used with
> + vm-clock-sec (json-int)
> +
> +Example:
> +
> +-> { "execute": "query-snapshots" }
> +<- {
> + "return":[
> + {
> + "id": "1",
> + "name": "snapshot1",
> + "vm-state-size": 0,
> + "date-sec": 10000200,
> + "date-nsec": 12,
> + "vm-clock-sec": 206,
> + "vm-clock-nsec": 30
Not your patch's fault, but here goes anyway: I dislike this
representation of time.
QMP has time in seconds, milliseconds, nanoseconds, (seconds,
milliseconds) and (seconds, nanoseconds). There has been no adult
supervision, obviously (I may say that, because it's as much my fault as
it's anybody else's).
The sanest one by far is nanoseconds. Good for 2^63 of them. Since pi
seconds is a nanocentury, good for 2^63 / (pi * 1e9) centuries, which
should be safely beyond your retirement age.
> + },
> + {
> + "id": "2",
> + "name": "snapshot2",
> + "vm-state-size": 34000000,
> + "date-sec": 13000200,
> + "date-nsec": 32,
> + "vm-clock-sec": 406,
> + "vm-clock-nsec": 31
> + }
> + ]
> + }
> +
> +EQMP
> +
> + {
> + .name = "query-snapshots",
> + .args_type = "",
> + .mhandler.cmd_new = qmp_marshal_input_query_snapshots,
> + },
> +
> +SQMP
> query-blockstats
> ----------------
- Re: [Qemu-devel] [PATCH V11 05/17] block: add snapshot info query function bdrv_query_snapshot_info_list(), (continued)
[Qemu-devel] [PATCH V11 06/17] block: add check for VM snapshot in bdrv_query_snapshot_info_list(), Wenchao Xia, 2013/04/02
[Qemu-devel] [PATCH V11 08/17] block: move qmp_query_block() and bdrv_query_info() to block/qapi.c, Wenchao Xia, 2013/04/02
[Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Wenchao Xia, 2013/04/02
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Stefan Hajnoczi, 2013/04/08
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots,
Markus Armbruster <=
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Wenchao Xia, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Markus Armbruster, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Luiz Capitulino, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Eric Blake, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Luiz Capitulino, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Wenchao Xia, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Eric Blake, 2013/04/11
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Wenchao Xia, 2013/04/12
- Re: [Qemu-devel] [PATCH V11 09/17] qmp: add interface query-snapshots, Markus Armbruster, 2013/04/12
[Qemu-devel] [PATCH V11 10/17] qmp: add recursive member in ImageInfo, Wenchao Xia, 2013/04/02