--- ...continuing my thoughts from 8/7. These are the additional fields required in virStorageSource to copy all fields directly listed in virStorageFileMetadata that are not already rendered redundant, as mentioned in those comments. By populating these fields directly in virStorageSource, I can follow up with some patches to s/virStorageFileMetadata/virStorageSource/, and finally have one struct in use. From there, I now have the situation that following the backing chain in order to do SELinux labeling also leaves the chain populated with the details I need for enhanced XML output of domain <disk> information for a live guest.
src/util/virstoragefile.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index da90374..440504b 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -238,7 +238,27 @@ typedef virStorageSource *virStorageSourcePtr; * view. */ struct _virStorageSource { int type; /* enum virStorageType */ + + /* Name of this source, as spelled by the user (for active layer) + * or by metadata of the parent file (for backing store), exposed + * in xml */ char *path; + /* Canonical name of this file, if on local file system; used to + * detect loops in the backing store chain. Not in xml */ + char *canonName; + /* Directory to start from if backingStoreRaw is a relative file + * name. Not in xml */ + char *relDir; + /* Name of backing store recorded in metadata. Not in xml for this + * element, but duplicated in backingMeta->path where it is in xml + * for the child */ + char *backingStoreRaw; + /* Backing store for this element. If backingStoreRaw is non-NULL + * but this is NULL, there was an error following the chain; + * otherwise, the two fields should both be NULL or both be + * non-NULL. */ + virStorageSourcePtr backingMeta; + int protocol; /* enum virStorageNetProtocol */ size_t nhosts; virStorageNetHostDefPtr hosts; -- 1.9.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list