[libvirt] [PATCH 2/5] snapshot: remote protocol for getparent
Daniel Veillard
veillard at redhat.com
Wed Sep 28 13:11:49 UTC 2011
On Sat, Sep 24, 2011 at 06:30:03PM -0600, Eric Blake wrote:
> Mostly straight-forward, although this is the first API that
> returns a new snapshot based on a snapshot rather than a domain.
>
> * src/remote/remote_protocol.x
> (REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT): New rpc.
> (remote_domain_snapshot_get_parent_args)
> (remote_domain_snapshot_get_parent_ret): New structs.
> * src/rpc/gendispatch.pl: Adjust generator.
> * src/remote/remote_driver.c (remote_driver): Use it.
> * src/remote_protocol-structs: Update.
> ---
> src/remote/remote_driver.c | 1 +
> src/remote/remote_protocol.x | 12 +++++++++++-
> src/remote_protocol-structs | 8 ++++++++
> src/rpc/gendispatch.pl | 4 +++-
> 4 files changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
> index 1217d94..740dd75 100644
> --- a/src/remote/remote_driver.c
> +++ b/src/remote/remote_driver.c
> @@ -4412,6 +4412,7 @@ static virDriver remote_driver = {
> .domainSnapshotListNames = remoteDomainSnapshotListNames, /* 0.8.0 */
> .domainSnapshotLookupByName = remoteDomainSnapshotLookupByName, /* 0.8.0 */
> .domainHasCurrentSnapshot = remoteDomainHasCurrentSnapshot, /* 0.8.0 */
> + .domainSnapshotGetParent = remoteDomainSnapshotGetParent, /* 0.9.7 */
> .domainSnapshotCurrent = remoteDomainSnapshotCurrent, /* 0.8.0 */
> .domainRevertToSnapshot = remoteDomainRevertToSnapshot, /* 0.8.0 */
> .domainSnapshotDelete = remoteDomainSnapshotDelete, /* 0.8.0 */
> diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
> index 455e324..3504e34 100644
> --- a/src/remote/remote_protocol.x
> +++ b/src/remote/remote_protocol.x
> @@ -2081,6 +2081,15 @@ struct remote_domain_has_current_snapshot_ret {
> int result;
> };
>
> +struct remote_domain_snapshot_get_parent_args {
> + remote_nonnull_domain_snapshot snap;
> + unsigned int flags;
> +};
> +
> +struct remote_domain_snapshot_get_parent_ret {
> + remote_nonnull_domain_snapshot snap;
> +};
> +
> struct remote_domain_snapshot_current_args {
> remote_nonnull_domain dom;
> unsigned int flags;
> @@ -2509,7 +2518,8 @@ enum remote_procedure {
>
> REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241, /* skipgen skipgen */
> REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242, /* autogen autogen */
> - REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243 /* skipgen skipgen */
> + REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243, /* skipgen skipgen */
> + REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244 /* autogen autogen */
>
> /*
> * Notice how the entries are grouped in sets of 10 ?
> diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
> index 810b19c..53705bf 100644
> --- a/src/remote_protocol-structs
> +++ b/src/remote_protocol-structs
> @@ -1568,6 +1568,13 @@ struct remote_domain_has_current_snapshot_args {
> struct remote_domain_has_current_snapshot_ret {
> int result;
> };
> +struct remote_domain_snapshot_get_parent_args {
> + remote_nonnull_domain_snapshot snap;
> + u_int flags;
> +};
> +struct remote_domain_snapshot_get_parent_ret {
> + remote_nonnull_domain_snapshot snap;
> +};
> struct remote_domain_snapshot_current_args {
> remote_nonnull_domain dom;
> u_int flags;
> @@ -1958,4 +1965,5 @@ enum remote_procedure {
> REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241,
> REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242,
> REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243,
> + REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244,
> };
> diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl
> index fcd1a26..039d785 100755
> --- a/src/rpc/gendispatch.pl
> +++ b/src/rpc/gendispatch.pl
> @@ -1273,7 +1273,9 @@ elsif ($opt_k) {
> $single_ret_type = "int";
> } else {
> if ($name eq "domain_snapshot") {
> - push(@ret_list, "rv = get_nonnull_$name(dom, ret.$arg_name);");
> + my $dom = "$priv_src";
> + $dom =~ s/->conn//;
> + push(@ret_list, "rv = get_nonnull_$name($dom, ret.$arg_name);");
> } else {
> push(@ret_list, "rv = get_nonnull_$name($priv_src, ret.$arg_name);");
> }
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list