
On 11/03/2014 05:22 AM, weiwei li wrote:
mig->nbd is initialized by qemuMigrationCookieXMLParse(called by qemuMigrationEatCookie),with a condition that the nbd infomation contained in Cookie string. I found in debug info that qemuMigrationStartNBDServer had been called in qemuMigrationPrepareAny(mig->nbd not null), but at in qemuMigrationFinish qemuMigrationStopNBDServer can not really stop nbd server bucause mig->nbd is not initialized(that is because cookie string does not contain nbd information ).
so ,there are two solutions: 1 qemuMigrationStopNBDServer ignore mig->nbd null ptr 2 add cookie info for nbd same stage (that is lost in which stage i am not sure~ )
I choose an easy way solution 1 with least code changing, maybe is not google way :)
cookie log is like this: 2014-10-30 08:38:14.106+0000: 15078: debug : qemuMigrationRun:3254 : driver=0x7f936413cd40, vm=0x7f934400b850, cookiein=<qemu-migration> <name>3cd4c349-e058-4a1a-8b3d-cc988efd11e2</name> <uuid>3cd4c349-e058-4a1a-8b3d-cc988efd11e2</uuid> <hostname>50e54929-059c-ffff-ffff-ffffffffffff_10.180.39.36</hostname> <hostuuid>50e54929-059c-ffff-ffff-ffffffffffff</hostuuid> <nbd port='49153'/> </qemu-migration>
2014-10-30 08:39:12.527+0000: 15076: debug : virObjectRef:296 : OBJECT_REF: obj=0x7f9364138880 2014-10-30 08:39:12.527+0000: 15076: debug : qemuMigrationFinish:4507 : driver=0x7f936413cd40, dconn=0x7f9358002720, vm=0x7f935c002da0, cookiein=<qemu-migration> <name>3cd4c349-e058-4a1a-8b3d-cc988efd11e2</name> <uuid>3cd4c349-e058-4a1a-8b3d-cc988efd11e2</uuid> <hostname>50e54929-059c-ffff-ffff-ffffffffffff_10.180.39.36</hostname> <hostuuid>50e54929-059c-ffff-ffff-ffffffffffff</hostuuid> <feature name='persistent'/>
...
<memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain>
<nbd/>
So the <nbd/> element is there, we just don't parse it because qemuMigrationFinish calls qemuMigrationEatCookie without the QEMU_MIGRATION_COOKIE_NBD flag. I believe the proper fix is to add this flag there. Jan
</qemu-migration> , cookieinlen=2567, cookieout=0x7f93722eab08, cookieoutlen=0x7f93722eab14, flags=289, retcode=0