[libvirt] [PATCH 09/16] snapshot: Refactor list filtering

Eric Blake eblake at redhat.com
Thu Mar 21 18:25:06 UTC 2019


On 3/20/19 4:40 PM, John Ferlan wrote:
> 
> 
> On 3/20/19 1:40 AM, Eric Blake wrote:
>> Separate the algorithm for which list members to vist (which is
>> generic and can be shared with checkpoints, provided that checkpoints
>> pick the same bit values for some of its flags) from the decision on
>> which members to return (which is specific to snapshots).  The typedef
>> for the callback function feels a bit heavy here, but will make it
>> easier to move the common portions in a later patch.
>>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> ---
>>  src/conf/virdomainsnapshotobjlist.h |  4 ++
>>  src/conf/virdomainsnapshotobjlist.c | 60 ++++++++++++++++++-----------
>>  2 files changed, 42 insertions(+), 22 deletions(-)
>>
> 
> Reviewed-by: John Ferlan <jferlan at redhat.com>


I'm squashing in this code motion as well; missed in 9b75154c
(basically, the filter flags are a functionality of the listing, not of
the XML - made more obvious by this patch splitting out the filter
callback as the client of those macros).

diff --git i/src/conf/snapshot_conf.h w/src/conf/snapshot_conf.h
index b13a500af4..937310efac 100644
--- i/src/conf/snapshot_conf.h
+++ w/src/conf/snapshot_conf.h
@@ -133,29 +133,6 @@ int
virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr snapshot,
                                 int default_snapshot,
                                 bool require_match);

-# define VIR_DOMAIN_SNAPSHOT_FILTERS_METADATA \
-               (VIR_DOMAIN_SNAPSHOT_LIST_METADATA     | \
-                VIR_DOMAIN_SNAPSHOT_LIST_NO_METADATA)
-
-# define VIR_DOMAIN_SNAPSHOT_FILTERS_LEAVES \
-               (VIR_DOMAIN_SNAPSHOT_LIST_LEAVES       | \
-                VIR_DOMAIN_SNAPSHOT_LIST_NO_LEAVES)
-
-# define VIR_DOMAIN_SNAPSHOT_FILTERS_STATUS \
-               (VIR_DOMAIN_SNAPSHOT_LIST_INACTIVE     | \
-                VIR_DOMAIN_SNAPSHOT_LIST_ACTIVE       | \
-                VIR_DOMAIN_SNAPSHOT_LIST_DISK_ONLY)
-
-# define VIR_DOMAIN_SNAPSHOT_FILTERS_LOCATION \
-               (VIR_DOMAIN_SNAPSHOT_LIST_INTERNAL     | \
-                VIR_DOMAIN_SNAPSHOT_LIST_EXTERNAL)
-
-# define VIR_DOMAIN_SNAPSHOT_FILTERS_ALL \
-               (VIR_DOMAIN_SNAPSHOT_FILTERS_METADATA  | \
-                VIR_DOMAIN_SNAPSHOT_FILTERS_LEAVES    | \
-                VIR_DOMAIN_SNAPSHOT_FILTERS_STATUS    | \
-                VIR_DOMAIN_SNAPSHOT_FILTERS_LOCATION)
-
 bool virDomainSnapshotDefIsExternal(virDomainSnapshotDefPtr def);
 bool virDomainSnapshotIsExternal(virDomainSnapshotObjPtr snap);

diff --git i/src/conf/virdomainsnapshotobjlist.h
w/src/conf/virdomainsnapshotobjlist.h
index c7d4d265cb..8975f1a8dd 100644
--- i/src/conf/virdomainsnapshotobjlist.h
+++ w/src/conf/virdomainsnapshotobjlist.h
@@ -74,6 +74,29 @@ int
virDomainSnapshotForEach(virDomainSnapshotObjListPtr snapshots,
                              void *data);
 int virDomainSnapshotUpdateRelations(virDomainSnapshotObjListPtr
snapshots);

+# define VIR_DOMAIN_SNAPSHOT_FILTERS_METADATA \
+               (VIR_DOMAIN_SNAPSHOT_LIST_METADATA     | \
+                VIR_DOMAIN_SNAPSHOT_LIST_NO_METADATA)
+
+# define VIR_DOMAIN_SNAPSHOT_FILTERS_LEAVES \
+               (VIR_DOMAIN_SNAPSHOT_LIST_LEAVES       | \
+                VIR_DOMAIN_SNAPSHOT_LIST_NO_LEAVES)
+
+# define VIR_DOMAIN_SNAPSHOT_FILTERS_STATUS \
+               (VIR_DOMAIN_SNAPSHOT_LIST_INACTIVE     | \
+                VIR_DOMAIN_SNAPSHOT_LIST_ACTIVE       | \
+                VIR_DOMAIN_SNAPSHOT_LIST_DISK_ONLY)
+
+# define VIR_DOMAIN_SNAPSHOT_FILTERS_LOCATION \
+               (VIR_DOMAIN_SNAPSHOT_LIST_INTERNAL     | \
+                VIR_DOMAIN_SNAPSHOT_LIST_EXTERNAL)
+
+# define VIR_DOMAIN_SNAPSHOT_FILTERS_ALL \
+               (VIR_DOMAIN_SNAPSHOT_FILTERS_METADATA  | \
+                VIR_DOMAIN_SNAPSHOT_FILTERS_LEAVES    | \
+                VIR_DOMAIN_SNAPSHOT_FILTERS_STATUS    | \
+                VIR_DOMAIN_SNAPSHOT_FILTERS_LOCATION)
+
 int virDomainListSnapshots(virDomainSnapshotObjListPtr snapshots,
                            virDomainSnapshotObjPtr from,
                            virDomainPtr dom,


-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190321/96784ef5/attachment-0001.sig>


More information about the libvir-list mailing list