migration: Support gtree migration
commit9a85e4b8f672016adbf7b7d5beaab2a99b9b5615
authorEric Auger <eric.auger@redhat.com>
Fri, 11 Oct 2019 12:17:24 +0000 (11 14:17 +0200)
committerDr. David Alan Gilbert <dgilbert@redhat.com>
Fri, 11 Oct 2019 16:52:31 +0000 (11 17:52 +0100)
tree6ccaef0cf13914ec1c9b58cf2d138548c7f370ad
parentaff66d2ef024372a27761959b46a306a6ab92f47
migration: Support gtree migration

Introduce support for GTree migration. A custom save/restore
is implemented. Each item is made of a key and a data.

If the key is a pointer to an object, 2 VMSDs are passed into
the GTree VMStateField.

When putting the items, the tree is traversed in sorted order by
g_tree_foreach.

On the get() path, gtrees must be allocated using the proper
key compare, key destroy and value destroy. This must be handled
beforehand, for example in a pre_load method.

Tests are added to test save/dump of structs containing gtrees
including the virtio-iommu domain/mappings scenario.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Message-Id: <20191011121724.433-1-eric.auger@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  uintptr_t fixup for test on 32bit
include/migration/vmstate.h
migration/trace-events
migration/vmstate-types.c
tests/test-vmstate.c