Re: [PATCH v2 06/11] snapshot: Add virDomainSnapshotDefParseList

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2/23/19 4:24 PM, Eric Blake wrote:
> Add a new function to make it possible to parse a list of snapshots
> at once.  This is a counterpart to the previous patch making it
> possible to produce all snapshots in a single XML string, and
> intentionally parses the same top-level element <snapshots> with
> an optional attribute current='name'.
> 
> Note that existing REDEFINE code uses virDomainSnapshotRedefinePrep()
> for some sanity checking - much of that checking involves parent/child
> relationships (which make sense when doing one element at a time and
> worrying about replacement), but where this patch gets away with the
> much simpler final call to virDomainSnapshotUpdateRelations() (for
> all relationship checking after the end, since we know we started with
> no relations at all, and since checking parent relationships
> per-snapshot is not viable as we don't control which order the
> snapshots appear in).  All other domain-agnostic sanity checks used
> during a redefinition are copied here.

Some day maybe there's a helper that can handle both uses...

> 
> Signed-off-by: Eric Blake <eblake@xxxxxxxxxx>
> ---
>  src/conf/snapshot_conf.h |   7 ++
>  src/conf/snapshot_conf.c | 135 +++++++++++++++++++++++++++++++++++++++
>  src/libvirt_private.syms |   1 +
>  3 files changed, 143 insertions(+)
> 
> diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h
> index 19ab75f895..6a92241fe6 100644
> --- a/src/conf/snapshot_conf.h
> +++ b/src/conf/snapshot_conf.h
> @@ -117,6 +117,13 @@ virDomainSnapshotDefPtr virDomainSnapshotDefParseNode(xmlDocPtr xml,
>                                                        virCapsPtr caps,
>                                                        virDomainXMLOptionPtr xmlopt,
>                                                        unsigned int flags);
> +int virDomainSnapshotDefParseList(const char *xmlSstr,
> +                                  const unsigned char *domain_uuid,
> +                                  virDomainSnapshotObjListPtr snapshots,
> +                                  virDomainSnapshotObjPtr *current_snap,
> +                                  virCapsPtr caps,
> +                                  virDomainXMLOptionPtr xmlopt,
> +                                  unsigned int flags);

virDomainSnapshotObjListParse (consistency w/
virDomainSnapshotObjListFormat)

>  void virDomainSnapshotDefFree(virDomainSnapshotDefPtr def);
>  char *virDomainSnapshotDefFormat(const char *uuidstr,
>                                   virDomainSnapshotDefPtr def,
> diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
> index 963dc10247..61e26726e9 100644
> --- a/src/conf/snapshot_conf.c
> +++ b/src/conf/snapshot_conf.c
> @@ -426,6 +426,141 @@ virDomainSnapshotDefParseString(const char *xmlStr,
>  }
> 
> 
> +int virDomainSnapshotDefParseList(const char *xmlStr,
> +                                  const unsigned char *domain_uuid,
> +                                  virDomainSnapshotObjListPtr snapshots,
> +                                  virDomainSnapshotObjPtr *current_snap,
> +                                  virCapsPtr caps,
> +                                  virDomainXMLOptionPtr xmlopt,
> +                                  unsigned int flags)

int
virDomainSnapshotObjListParse(...)

> +{
> +    int ret = -1;
> +    xmlDocPtr xml;
> +    xmlNodePtr root;
> +    xmlXPathContextPtr ctxt = NULL;
> +    char *current = NULL;
> +    int n;
> +    size_t i;
> +    VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
> +    int keepBlanksDefault = xmlKeepBlanksDefault(0);
VIR_AUTOFREE(char *) current = NULL;

Typically it's been requested to keep all the VIR_AUTO* at the end of
arguments... Of course beyond the one change Peter decided not to
re-open his editor to modify after review comment requested otherwise.

[...]

> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index c623737c30..96f54a97fe 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -881,6 +881,7 @@ virDomainSnapshotAssignDef;
>  virDomainSnapshotDefFormat;
>  virDomainSnapshotDefFree;
>  virDomainSnapshotDefIsExternal;
> +virDomainSnapshotDefParseList;

virDomainSnapshotObjListParse;

>  virDomainSnapshotDefParseString;
>  virDomainSnapshotDropParent;
>  virDomainSnapshotFindByName;
> 

Simple enough adjustments...

Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx>

John

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux