)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8ee2d869c695361d331710b209a8901213ab8b75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a642aa3a_79a34fa7","updated":"2025-07-26 10:38:42.000000000","message":"recheck post failure","commit_id":"9a94b102412ab2b0c40505e6b2d0da0eab0045e5"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"66284263417bd74c6b687c2f48e9ef4519747067","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"777da7db_a8358c61","updated":"2025-08-05 13:41:47.000000000","message":"LGTM","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"13dcef06ab9bcb1b1c7df8f6399580341c5b74e7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fafa477a_f4a56275","updated":"2025-09-16 12:15:01.000000000","message":"Thanks for taking care of it. Just a small detail.","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"059fdc08c6d62b74274b717b6c12195d2ae0b7aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6a4bf8cd_2494eb77","in_reply_to":"fafa477a_f4a56275","updated":"2025-09-30 08:20:07.000000000","message":"Done","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"059fdc08c6d62b74274b717b6c12195d2ae0b7aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d7f7f6ea_4b17dd76","updated":"2025-09-30 08:20:07.000000000","message":"Thanks for taking care of it.","commit_id":"5cfc1a8a6c9a49769baebb07a448944851e15a05"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1f89cd7e8ad5443f1335cae1067d1d8f80a13173","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"265d5c14_98b4b06e","updated":"2025-09-24 06:48:44.000000000","message":"recheck - likely intermittent","commit_id":"5cfc1a8a6c9a49769baebb07a448944851e15a05"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b9dcf4b8a06c2e0f91bded63458f0c365af07978","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"015065fa_16f26c85","in_reply_to":"d7f7f6ea_4b17dd76","updated":"2025-10-03 07:13:03.000000000","message":"Just today I was pointed to your blueprint https://blueprints.launchpad.net/nova/+spec/libvirt-migrate-parallel which I have never seen before...\n\nSorry for not using it and creating a new one instead - I really have missed it 😞\nBut given that I came up with exact same config name - I think it should be fine after all 😊","commit_id":"5cfc1a8a6c9a49769baebb07a448944851e15a05"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188972e21b4cc9e666f576356862aea95fe49cfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e441f835_86f14a2c","updated":"2025-11-05 16:14:48.000000000","message":"I think we need a version check for this. Also, what happens if the source attempts to use multifd when migrating to an older qemu?","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":37175,"name":"Alexander Hild","display_name":"hildale","email":"alexander.hild@stackit.cloud","username":"hildale"},"change_message_id":"fe3a3012d41996a0151d39a1f3f6307bb1a0092e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3161d9e8_a503c62e","updated":"2025-11-07 10:45:14.000000000","message":"works really good for us.\n\ni tested the patch with 6TB RAM VMs + 2x 100G Network Adapters.","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f29e348e4ae28160f283f67d47a752c3f912589e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e72925bb_30892246","updated":"2025-11-07 17:18:52.000000000","message":"Live migration job above is happy with this. I just added the version check I asked for and a test, so I\u0027m good with this now. Specless blueprint is approved so I think we\u0027re good to go.","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2fe9f162d593614165cbb27c29f56fcdd9b88247","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c9734879_d3d2b4f4","updated":"2025-11-07 19:45:32.000000000","message":"This looks good to me. gibi is already +1 on the code, pending approval of the specless blueprint and we have confirmed the blueprint has been approved, so +Wing","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2820038ddf1f49b840bd982986bb129d59e12d32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d02d5e49_d6acd056","updated":"2025-11-07 15:43:09.000000000","message":"the specless bp needs to be approved on a nova IRC meeting. Otherwise the implementation looks good to me.","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9b1d7947d130f00388c7ceaeeaddce4f88d3b0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0209b29e_4910ba98","updated":"2025-11-07 20:35:27.000000000","message":"upgrading my vote as the bp is approved","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"}],"nova/conf/libvirt.py":[{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"13dcef06ab9bcb1b1c7df8f6399580341c5b74e7","unresolved":true,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fadd2e1_23717d9f","line":386,"updated":"2025-09-16 12:15:01.000000000","message":"Small detail, it is at odds with the setting ``[libvirt]live_migration_permit_post_copy`` for QEMU versions prior 10.1.0. (See https://www.qemu.org/2025/08/26/qemu-10-1-0/ and search for multifd).","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bc53a7ac7c1cf03de3baaf6275debc636270bea5","unresolved":true,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"449be4dd_335bdea2","line":386,"in_reply_to":"3fadd2e1_23717d9f","updated":"2025-09-18 17:34:27.000000000","message":"So you propose to mention in description that with 10.1.0 it will also enable multi-fd for post-migrate of memory in as well by default?\n\nPlease, correct me if I\u0027m wrong","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"cb0b36a4336b08f2664cc9e659e603dc1b41ef12","unresolved":true,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"9d0b11be_2c316384","line":386,"in_reply_to":"427fa7bc_feaab60d","updated":"2025-09-22 12:16:37.000000000","message":"Well, there are no errors for nova when parallel is used with post-copy.\n\nbut indeed seems that post-copy is actually failing, because:\n`[instance: d293bc6b-471d-4d21-ba3c-5b2cd17afade] Instance shutdown by itself. Calling the stop API. Current vm_state: active, current task_state: None, original DB power_state: 4, current VM power_state: 4` - so as a result post-copy VM ends up shut off, as if there\u0027re communication issues.\n\nAnd in domain logs I see\n```\nqemu-system-x86_64: ../../util/yank.c:107: yank_unregister_instance: Assertion `QLIST_EMPTY(\u0026entry-\u003eyankfns)\u0027 failed.\n2025-09-22 12:07:57.093+0000: shutting down, reason\u003dcrashed\n```\n\nSo indeed, I think you\u0027re right here and that is really a great catch.","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"9dc6da46ff0a61b11d718aea423377a8318273f6","unresolved":true,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"aa7867b8_e6f83d78","line":386,"in_reply_to":"449be4dd_335bdea2","updated":"2025-09-19 08:29:17.000000000","message":"Kind of the other way: You can only set the value `live_migration_parallel_connections` to a different value than 1 and enable `live_migration_permit_post_copy` with QEMU 10.1.0 or later, otherwise it will result in an error.","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"71b300f544647e02dd5a7a360de23ecb2dd7acea","unresolved":false,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"c265a164_da8f6c71","line":386,"in_reply_to":"9d0b11be_2c316384","updated":"2025-09-22 12:25:22.000000000","message":"Done","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"0fe11d7f8439a1f9719722dd6964f34803e1e2fb","unresolved":true,"context_lines":[{"line_number":383,"context_line":"reserve CPUs using ``cpu_shared_set``/``cpu_dedicated_set`` or"},{"line_number":384,"context_line":"``reserved_host_cpus`` multiplied by ``cpu_allocation_ratio``."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Related options:"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* ``[compute] cpu_shared_set``"},{"line_number":389,"context_line":"* ``[compute] cpu_dedicated_set``"}],"source_content_type":"text/x-python","patch_set":7,"id":"427fa7bc_feaab60d","line":386,"in_reply_to":"aa7867b8_e6f83d78","updated":"2025-09-19 08:32:16.000000000","message":"But yes, I think it would be sufficient to do so in the description. I.e.\nadding to \"Related options\" `[libvirt] live_migration_permit_post_copy`,\nand something along the lines of \n\u003e Changing this parameter to a value bigger than 1 and enabling `live_migration_permit_post_copy` is only possible with QEMU 10.1.0.","commit_id":"75f46000b2f7992927b83398c08d1a459835c3b1"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188972e21b4cc9e666f576356862aea95fe49cfd","unresolved":true,"context_lines":[{"line_number":218,"context_line":"#"},{"line_number":219,"context_line":"# DO NOT FORGET to update this document when touching any versions below!"},{"line_number":220,"context_line":"MIN_LIBVIRT_VERSION \u003d (8, 0, 0)"},{"line_number":221,"context_line":"MIN_QEMU_VERSION \u003d (6, 2, 0)"},{"line_number":222,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (10, 0, 0)"},{"line_number":223,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (8, 2, 2)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"269c7845_8b939c39","line":221,"updated":"2025-11-05 16:14:48.000000000","message":"This is far older than the version required for multifd","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68799aa6c168b771fa243d9001ab8f23236d52ea","unresolved":false,"context_lines":[{"line_number":218,"context_line":"#"},{"line_number":219,"context_line":"# DO NOT FORGET to update this document when touching any versions below!"},{"line_number":220,"context_line":"MIN_LIBVIRT_VERSION \u003d (8, 0, 0)"},{"line_number":221,"context_line":"MIN_QEMU_VERSION \u003d (6, 2, 0)"},{"line_number":222,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (10, 0, 0)"},{"line_number":223,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (8, 2, 2)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"698f3d56_99939ec5","line":221,"in_reply_to":"102f4448_3bae42fe","updated":"2025-11-07 15:45:03.000000000","message":"Acknowledged","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b3a5ae12558e404bf7fb5cb05dc66bd552c398c4","unresolved":false,"context_lines":[{"line_number":218,"context_line":"#"},{"line_number":219,"context_line":"# DO NOT FORGET to update this document when touching any versions below!"},{"line_number":220,"context_line":"MIN_LIBVIRT_VERSION \u003d (8, 0, 0)"},{"line_number":221,"context_line":"MIN_QEMU_VERSION \u003d (6, 2, 0)"},{"line_number":222,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (10, 0, 0)"},{"line_number":223,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (8, 2, 2)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"e66e58bd_c1875c6b","line":221,"in_reply_to":"102f4448_3bae42fe","updated":"2025-11-07 15:46:09.000000000","message":"Acknowledged","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"386ece47711f89d798f70eec371f4c334d003bc6","unresolved":true,"context_lines":[{"line_number":218,"context_line":"#"},{"line_number":219,"context_line":"# DO NOT FORGET to update this document when touching any versions below!"},{"line_number":220,"context_line":"MIN_LIBVIRT_VERSION \u003d (8, 0, 0)"},{"line_number":221,"context_line":"MIN_QEMU_VERSION \u003d (6, 2, 0)"},{"line_number":222,"context_line":"NEXT_MIN_LIBVIRT_VERSION \u003d (10, 0, 0)"},{"line_number":223,"context_line":"NEXT_MIN_QEMU_VERSION \u003d (8, 2, 2)"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"102f4448_3bae42fe","line":221,"in_reply_to":"269c7845_8b939c39","updated":"2025-11-05 16:20:26.000000000","message":"Ah, sorry, perhaps I misunderstood.. the later version required is only for multifd with postcopy? Either way, can\u0027t we check both CONF options here and the version and help avoid the crash if you enable both on old versions? Losing an instance in live migration for an avoidable mismatch (even if it\u0027s in the conf text) seems worth a check here.","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"188972e21b4cc9e666f576356862aea95fe49cfd","unresolved":true,"context_lines":[{"line_number":820,"context_line":"                raise exception.InternalError("},{"line_number":821,"context_line":"                    _(\u0027Nova requires Virtuozzo version %s or greater.\u0027) %"},{"line_number":822,"context_line":"                    libvirt_utils.version_to_string(MIN_VIRTUOZZO_VERSION))"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"        # Give the cloud admin a heads up if we are intending to"},{"line_number":825,"context_line":"        # change the MIN_LIBVIRT_VERSION in the next release."},{"line_number":826,"context_line":"        if not self._host.has_min_version(NEXT_MIN_LIBVIRT_VERSION):"}],"source_content_type":"text/x-python","patch_set":9,"id":"aaea5c8c_b2cad261","line":823,"updated":"2025-11-05 16:14:48.000000000","message":"I assume we need a version check here to abort if libvirt/qemu is too old for parallel \u003e 1?","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b3a5ae12558e404bf7fb5cb05dc66bd552c398c4","unresolved":false,"context_lines":[{"line_number":820,"context_line":"                raise exception.InternalError("},{"line_number":821,"context_line":"                    _(\u0027Nova requires Virtuozzo version %s or greater.\u0027) %"},{"line_number":822,"context_line":"                    libvirt_utils.version_to_string(MIN_VIRTUOZZO_VERSION))"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"        # Give the cloud admin a heads up if we are intending to"},{"line_number":825,"context_line":"        # change the MIN_LIBVIRT_VERSION in the next release."},{"line_number":826,"context_line":"        if not self._host.has_min_version(NEXT_MIN_LIBVIRT_VERSION):"}],"source_content_type":"text/x-python","patch_set":9,"id":"8209bd38_d5fc9e9b","line":823,"in_reply_to":"aaea5c8c_b2cad261","updated":"2025-11-07 15:46:09.000000000","message":"Acknowledged","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68799aa6c168b771fa243d9001ab8f23236d52ea","unresolved":false,"context_lines":[{"line_number":820,"context_line":"                raise exception.InternalError("},{"line_number":821,"context_line":"                    _(\u0027Nova requires Virtuozzo version %s or greater.\u0027) %"},{"line_number":822,"context_line":"                    libvirt_utils.version_to_string(MIN_VIRTUOZZO_VERSION))"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"        # Give the cloud admin a heads up if we are intending to"},{"line_number":825,"context_line":"        # change the MIN_LIBVIRT_VERSION in the next release."},{"line_number":826,"context_line":"        if not self._host.has_min_version(NEXT_MIN_LIBVIRT_VERSION):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ce36cf98_5dfe92e3","line":823,"in_reply_to":"aaea5c8c_b2cad261","updated":"2025-11-07 15:45:03.000000000","message":"Done","commit_id":"40ef4aee9ab86a587cca89a80c7eda9495092364"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b3a5ae12558e404bf7fb5cb05dc66bd552c398c4","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        if (CONF.libvirt.virt_type in (\"qemu\", \"kvm\") and"},{"line_number":821,"context_line":"                CONF.libvirt.live_migration_parallel_connections \u003e 1 and"},{"line_number":822,"context_line":"                CONF.libvirt.live_migration_permit_post_copy is True):"},{"line_number":823,"context_line":"            if not self._host.has_min_version("},{"line_number":824,"context_line":"                    hv_ver\u003dMIN_MULTIFD_WITH_POSTCOPY_QEMU_VERSION):"},{"line_number":825,"context_line":"                raise exception.InternalError("},{"line_number":826,"context_line":"                    _(\u0027Nova requires QEMU version %s or greater to use \u0027"},{"line_number":827,"context_line":"                      \u0027live migration parallel connections with post-copy.\u0027) %"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa9409b8_b8025857","line":824,"range":{"start_line":823,"start_character":12,"end_line":824,"end_character":67},"updated":"2025-11-07 15:46:09.000000000","message":"Just to mention that aloud - this will not protect from a usecase of source running qemu 10.1 with post-copy enabled, while destination will have qemu 9 with post-copy disabled.\n\nI don\u0027t think that\u0027s an issue per say, and having a safeguard like that will prevent from most common issues.","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"176953b1941b4bb9f8cfac1fcf87f54822744cac","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        if (CONF.libvirt.virt_type in (\"qemu\", \"kvm\") and"},{"line_number":821,"context_line":"                CONF.libvirt.live_migration_parallel_connections \u003e 1 and"},{"line_number":822,"context_line":"                CONF.libvirt.live_migration_permit_post_copy is True):"},{"line_number":823,"context_line":"            if not self._host.has_min_version("},{"line_number":824,"context_line":"                    hv_ver\u003dMIN_MULTIFD_WITH_POSTCOPY_QEMU_VERSION):"},{"line_number":825,"context_line":"                raise exception.InternalError("},{"line_number":826,"context_line":"                    _(\u0027Nova requires QEMU version %s or greater to use \u0027"},{"line_number":827,"context_line":"                      \u0027live migration parallel connections with post-copy.\u0027) %"}],"source_content_type":"text/x-python","patch_set":10,"id":"e0808bc2_fb5afcaa","line":824,"range":{"start_line":823,"start_character":12,"end_line":824,"end_character":67},"in_reply_to":"fa9409b8_b8025857","updated":"2025-11-07 16:03:33.000000000","message":"The destination having post-copy disabled isn\u0027t really the problem, it\u0027s that if you migrate to an older version, the check will have decided that the combination is allowed. So yes, that\u0027s a fair point, but this is better than nothing at least, for people not in an upgrade that configure their hosts to just always drop the workloads. Downstream we don\u0027t allow migrating from new to old like that for reasons like this. We don\u0027t even collect the libvirt/qemu versions from the destination in `pre_live_migration()` so we could have other such issues already.\n\nI just wanted to make sure that at steady-state, you can\u0027t configure your host to always destroy workloads for a known combination of flags that will not work :)","commit_id":"25fbf32f22c7f1a8082269782034bf9477e96e48"}]}
