Context: ======= These logs were obtained after doing a test this way: $ virsh migrate --verbose \ --copy-storage-inc --p2p \ --live cvm1 qemu+ssh://root@devstack2/system Migration: [100 %] With the below libvirt log filters on both SOURCE & DEST's /etc/libvirt/libvirtd.conf: log_filters="3:event 3:file 1:util 1:security 1:qemu 1:libvirt" log_outputs="1:file:/var/log/libvirt/libvirtd.log" Upon successful migration: Observing libvirt/QEMU migration =========================================================== From here[1]: http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/qemu/MIGRATION.txt "To avoid anyone from changing the domain in the middle of migration we need to keep MIGRATION_OUT job active during migration from Begin to Confirm on the source side and MIGRATION_IN job has to be active from Prepare to Finish on the destination side." Let's see the evidence for that in the source and destination libvirtd logs respectively: (1) On SOURCE: Upon successful live block migration, we can see the start and stop of the "migration out" job: [. . .] 2015-09-29 18:47:42.692+0000: 8285: debug : qemuDomainObjBeginJobInternal:1363 : Started async job: migration out (vm=0x7f70f8014170 name=cvm1) [. . .] 2015-09-29 18:47:43.040+0000: 8285: debug : qemuDomainObjSetJobPhase:1231 : Setting 'migration out' phase to 'begin3' [. . .] 2015-09-29 18:47:45.722+0000: 8285: debug : qemuDomainObjEndAsyncJob:1498 : Stopping async job: migration out (vm=0x7f70f8014170 name=cvm1) [. . .] (2) On DEST: Upon successful live block migration, we can see the start and stop of the "MIGRATION IN" job: [. . .] 2015-09-29 18:47:42.999+0000: 22665: debug : qemuDomainObjBeginJobInternal:1363 : Started async job: migration in (vm=0x7fd33414cc20 name=cvm1) [. . .] 2015-09-29 18:47:45.048+0000: 22661: debug : qemuDomainObjSetJobPhase:1231 : Setting 'migration in' phase to 'finish3' [. . .] 2015-09-29 18:47:45.108+0000: 22661: debug : qemuDomainObjEndAsyncJob:1498 : Stopping async job: migration in (vm=0x7fd33414cc20 name=cvm1) [. . .]