* Li Zhijian (lizhij...@cn.fujitsu.com) wrote: > > > On 09/30/2016 02:15 PM, Amit Shah wrote: > > Hi, > > > > On (Thu) 29 Sep 2016 [19:06:32], Li Zhijian wrote: > > > Priviously, if the source and distination have different devices, source > > > could goto > > > the status "paused (postmigrate)", and the distination will exit that > > > means no qemu > > > is alive. > > > > > > After this patch, at above case, source can dectect the some error early > > > from distination > > > and stop the migration, source keep in status "running". > > > > How would incoming migrations from previous versions work? > > You are right. we need to consider more. > > How about that: > we need to introduce a new section type(e.g: QEMU_VM_SECTION_DEVICE_LIST). > > source side: > - at the beginning of qemu_savevm_state_begin(), send > QEMU_VM_SECTION_DEVICE_LIST first > - original path > > dst side: > - if we got the QEMU_VM_SECTION_DEVICE_LIST, have a check with the > devices(name,version) > - otherwise original path
Yes, and only send it on new machine types. I think a list could be a good idea; I don't worry too much about the 'paused (postmigrate)' case, because libvirt can spot that the destination failed and then restart the source, however a list would also fix the opposite case; where the destination has an extra device that the source does not have, in most cases I think that doesn't cause a failure at the moment but the device has an unusual state. A QEMU_VM_SECTION_DEVICE_LIST would work, but perhaps a subsection of vmstate_globalstate would work? Dave > > Please correct me. > > Thanks > Zhijian > > > > > > > Amit > > > > > > > > > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK