On 04/25/2018 08:41 AM, Daniel P. Berrangé wrote: > On Wed, Apr 25, 2018 at 02:36:52PM +0200, Peter Krempa wrote: >> On Wed, Apr 25, 2018 at 13:25:57 +0100, Daniel Berrange wrote: >>> On Wed, Apr 25, 2018 at 08:02:35AM -0400, John Ferlan wrote: >>>> >>>> >>>> On 04/25/2018 04:46 AM, Peter Krempa wrote: >>>>> On Wed, Apr 25, 2018 at 09:39:49 +0100, Daniel Berrange wrote: >>>>>> On Wed, Apr 25, 2018 at 10:32:05AM +0200, Peter Krempa wrote: >>>>>>> >>>>>>> Well, that depends. I did not read the docs for this thoroughly enough. >>>>>>> If it is okay for us to generate a new GUID upon every boot of a VM then >>>>>>> this will be for a rather simple implementation, since we have a very >>>>>>> limited set of situations when we are starting a new qemu process which >>>>>>> should NOT change the GUID and we will change it in all other scenarios. >>>>>> >>>>>> AFAIK, we *must* change GUID on every cold boot >>>>> >>>>> Good, that makes things rather simple. >>>>> >>>> >>>> This one is not really 100% clear to me. The "spec" is like 6 pages - >>>> it's a pretty quick read... >>>> >>>> http://go.microsoft.com/fwlink/?LinkId=260709 >>>> >>>> The last 2 pages describe "when" the GUID should change and specifically >>>> calling out cold boot is not one of those. What leads me to believe >>>> otherwise is the two boot scenarios and the unspecified VM config >>>> changes have this "undertone" that using the same GUID for those >>>> scenarios is fine/expected. >>> >>> Yeah the table at the very end is the key bit and it seems I was actually >>> wrong >>> >>> Scenario GenID changed >>> ----------------------------------------------------------------------- >>> Virtual machine is paused or resumed No >>> Virtual machine reboots No >>> Virtual machine host reboots No >>> Virtual machine starts executing a snapshot Yes >>> Virtual machine is recovered from backup Yes >>> Virtual machine is failed over in a disaster recovery env Yes >>> Virtual machine is live migrated No >>> Virtual machine is imported, copied, or cloned Yes >>> Virtual machine is failed over in a clustered environment No >>> Virtual machine's configuration changes Unspecified >>> >>> >>> My reading of "Virtual machine reboots" and "Virtual machine host reboots" >>> rows in particular is that we can *NOT* change GUID on every boot up >>> operation. The spec literally only wants it to be changed when there is >>> the possibility that the VM is potentially re-executing something that >>> has already been executed before. >>> >>> The transient VM feature is the real killer for libvirt - we have no >>> way of knowing when virDomainCreateXML launches a transient VM whether >>> that is starting up after a revert to backup/snapshot, or whether it >>> is a normal boot. Only the mgmt app like oVirt / OpenStack has enough >>> info to decide that. So we must allow the mgmt app to provide a GUID >>> in the XML document themselves, and then change it in places where we >>> know it is needed to change. Also allows virt-clone to adjust it too... >> >> Okay. So that means that we actually need to generate it in the parser, >> but we should also always report it back even for offline >> configurations. >> >> The only problem then will be what to do with the save/restore >> functionality, because that is really unknown to us since that API both >> includes the "Virtual machine is paused or resumed" and "Virtual machine >> starts executing a snapshot" scenario. > > I think it would fall under the "starts executing a snapshot" scenario > no matter what, because the spec doesn't say anything about whether the > original VM carried on running after the snapshot was taken. Just that > a snapshot was taken and this snapshot is then run. So the fact that > our save/restore can be view as a way to "pause" execution doesn't > matter - we've implemented "pause" by creating a snapshot and then > "resume" by running the snapshot. > So given all this - beyond not altering virDomainDefCopy to add a new flag and removing the ABI flag since it was only put there because of RevertToSnapshot @config copy difference, does just altering the genid via the START_GEN_VMID flag then cover things? Is there some other transition that needs that? IOW: Drop patches 2, 3 & 5... Merge patch 4 & 6 and alter 8/9 to not worry about abiflags. Do we print the GUID on inactive domains where we generate? I would think it wouldn't matter and the answer should be no. The print would only happen when active, but it's not that important. Tks - John and yes, 4.3.0 is out of the question here - it'd be in 4.4.0 at the earliest. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list