...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
>