-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Il 17/09/2014 11:06, Stefan Hajnoczi ha scritto: > I think the fundamental problem here is that the mirror block job > on the source host does not synchronize with live migration. > > Remember the mirror block job iterates on the dirty bitmap > whenever it feels like. > > There is no guarantee that the mirror block job has quiesced before > migration handover takes place, right?
Libvirt does that. Migration is started only once storage mirroring is out of the bulk phase, and the handover looks like: 1) migration completes 2) because the source VM is stopped, the disk has quiesced on the source 3) libvirt sends block-job-complete 4) libvirt receives BLOCK_JOB_COMPLETED. The disk has now quiesced on the destination as well. 5) the VM is started on the destination 6) the NBD server is stopped on the destination and the source VM is quit. It is actually a feature that storage migration is completed asynchronously with respect to RAM migration. The problem is that qcow2_invalidate_cache happens between (3) and (5), and it doesn't like the concurrent I/O received by the NBD server. Paolo -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJUGVOVAAoJEBvWZb6bTYby8gYP/irgMGZGWUrntNH6OrBYMcxn isEqxq8waFDe5i08OycUKniVMRlWvvCPRAHmOccDzEJkB/hTBGh+M8RpBgFVfG1+ vzzdmid6wWpmSWdlOI/9niA9hNQy8idjn3nP8B0YmCjd1FOCTicDfiXVnTny6+HW hhPoqfO84iIFHYOTtvZ4/MAWBwUSSDbSNWRkYFS/0eYeGNdqBclvglLjgrfgGIfX n15QuqB5FpccB3Tq43UaCbR+hqytmoOd59zG30YoDNd2yEOzeuvI9fq90f+/GzXh U/toL2RGM+CTNwoEeMmDwRBSmK8dNSEKnOxnXaxkzhNNcDU02qIwI29yYlzw2y+C R3H1jMc4O/O53vWJqYVCR/5Wmhu8hi8MK+sDYnsKgq9QJTumy0z21qJX5KR/X0bJ 0gC0hOy+7bm5bkFJZ5NCNLnPnntfQhLWZJjuzxMDiI3I14gF4QysOfRWkWhsGIAp 3FCnG8ox0t5wbGxDCltyZMcIyNkVfcyxILr3HhXTt1vOdiesESI4BwM+4yUXOv5b JBKHFB0Mdyksjq0ORA18OOiqEyMESEvGxcG6Lw92cLqh/TSbczBbW82DQVpuBqRV gDeGHC5BiLaUG9TOdz5LiWJw9ZHxl6bcRaUpFbft29cZY8l8nUFNSsAQxy4XalNc vPr8Qz7i9YA4hQY3Z2fe =xLkq -----END PGP SIGNATURE-----