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@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list