)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fd0fb5c5b1046fbf782a928e00785a3d873fdb92","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp: NVMe namespace mapping fails during VM live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When new Cinder volume is created a new subsystem and"},{"line_number":10,"context_line":"NVMe namespace created and mapped one-to-one in ONTAP."},{"line_number":11,"context_line":"Attach process will continue this one-to-one mapping"},{"line_number":12,"context_line":"between subsystem and host. This approach limits"},{"line_number":13,"context_line":"NVMe multi attach workflow and Live migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"b6b72cc0_ccdcc5db","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":54},"updated":"2025-11-21 14:49:33.000000000","message":"I\u0027m not familiar with the nvme technology for NetApp but it seems to me that this mappings only happened during attach time. What\u0027s created at volume creation time, will be the namespace (analogous to an iSCSI I guess), and the mapping after the user attaches.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3a3acc840c6a484ad384661d7aab5e251496abdb","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp: NVMe namespace mapping fails during VM live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When new Cinder volume is created a new subsystem and"},{"line_number":10,"context_line":"NVMe namespace created and mapped one-to-one in ONTAP."},{"line_number":11,"context_line":"Attach process will continue this one-to-one mapping"},{"line_number":12,"context_line":"between subsystem and host. This approach limits"},{"line_number":13,"context_line":"NVMe multi attach workflow and Live migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"8cecaaed_aaf1bf2b","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":54},"in_reply_to":"b6b72cc0_ccdcc5db","updated":"2025-12-18 08:54:29.000000000","message":"namespace is analogous to a LUN. Subsystem is analogous to iGroup. So a Subsystem is created and mapped to the namespace","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fd0fb5c5b1046fbf782a928e00785a3d873fdb92","unresolved":true,"context_lines":[{"line_number":12,"context_line":"between subsystem and host. This approach limits"},{"line_number":13,"context_line":"NVMe multi attach workflow and Live migration."},{"line_number":14,"context_line":"Single subsystem mapped to single namespace is causing"},{"line_number":15,"context_line":"this limitation. ONTAP dosn\u0027t allow mapping"},{"line_number":16,"context_line":"multiple subsystems to single namespace. This contrasts"},{"line_number":17,"context_line":"with iSCSI, where multiple iGroups can be mapped"},{"line_number":18,"context_line":"to a single LUN. To overcome this limitation,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9e04cf3d_59c54619","line":15,"range":{"start_line":15,"start_character":23,"end_line":15,"end_character":29},"updated":"2025-11-21 14:49:33.000000000","message":"nit: doesn\u0027t","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"66bbc730ffe0bf6dbae494d9b671b4ab8528a00b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1fc75055_55eb84bd","updated":"2025-09-17 12:43:29.000000000","message":"The commit message is missing the \"cherry picked from\" reference.","commit_id":"de88511e271fc790040bdb1ea527f7f9a0f33b99"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a668fd5d41f34f1b9083c251683b8059055873b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"38b0e739_407d524a","updated":"2025-10-31 16:45:52.000000000","message":"(Ignore the review priority, using it for testing.)","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"fdffa4d5f1b7903775902ef70967133ea77a1c4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"541cbeff_be6ce4fc","updated":"2026-01-15 18:02:10.000000000","message":"(commit message) cherry picked from git hash, not gerrit change id.  Otherwise clean cherry pick.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"91efdb90a6a3c09cf8f9bb11cf8cbfcf58a8386a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f131c680_df599268","updated":"2025-10-21 07:32:50.000000000","message":"@abishop@redhat.com, Thank you! for review. can you please review again.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"6cc05b081b7af3a591bf3101e66d632d8169aaeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"01a4a2e0_064b50c7","updated":"2025-11-21 18:14:44.000000000","message":"As this is a backport and the code looks ok, I will change my vote based on Doug\u0027s reply to Erlon.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"07704d8e4785e83003d3541c38e2f8a39b9ff5d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"82a98df5_456cb96f","updated":"2025-11-21 14:40:16.000000000","message":"I added a comment in the unit tests, but otherwise this patch does look good to me code-wise. \n\nI can\u0027t speak to the upgrade part of it, though, as I too would worry about it -- and I wonder if it is possible at all to use both methods?\n\nCode-wise this will get +1 from me once the question below is answered.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"3035aa8ec8c446559e821d64596b31e4c903b2db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"adf9991c_c9453a0c","updated":"2025-11-21 15:24:41.000000000","message":"I think Erlon has some good points here, and I\u0027d like to see the answers for them (so -1 for now).\n\nCode still looks good to me, but maybe there are workflow issues.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"876130c0e169aa05b7ecb019fdb92da0d95e87a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"16b801ee_1d0bcbc9","updated":"2025-10-12 14:34:29.000000000","message":"Thank you! Alan, for review. updated cherry pick id. please review again","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"cb53b8ebbdcdb85a389d2d7e0a1cef786b82d362","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ce9ad704_20bfa93f","updated":"2025-11-21 18:34:31.000000000","message":"This patch is a backport, and any concerns about the original patch on master need to be addressed on master. As long a this patch resolves the bug it references then it seems to be a valid backport.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"1b55713dfc9490c76331b18d38ad21eac16a0b2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d41ac45c_ce598b4d","updated":"2025-10-27 16:42:14.000000000","message":"Without these changes, the NVMe feature is effectively unusable for real-world provisioning workflows on ONTAP. We consistently hear that most customers have avoided or disabled NVMe because the current one-host-per-subsystem model breaks multi-attach and makes QoS enforcement inconsistent across connections to the same volume. As a result, NVMe has not been viable for live migration or other advanced provisioning activities.\n\nThe redesign to a shared subsystem model (many hosts attached through a single subsystem per namespace) directly removes these blockers:\n\n    Enables true multi-attach required for live migration and similar workflows\n    Restores consistent, enforceable QoS per volume/namespace\n    Unlocks NVMe workflows on ONTAP so NVMe is usable in production rather than a checkbox feature\n\nThis change is also critical for customers running RHOSP and ROSHO on older releases who need NVMe workflows and certification. Their certification and operations depend on multi-attach and reliable QoS; they cannot achieve that with the current architecture.\n\nWe acknowledge the compatibility impact. The documented upgrade path (backup, upgrade, restore under the new mapping) preserves data integrity","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"c084ce5db605f2244c014327e5684b467d03f87e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d46f95c1_1bfec3aa","updated":"2026-03-03 14:03:49.000000000","message":"I clicked cherry-pick in the Gerrit UI","commit_id":"43960baa5880b7fdf464e38373e5142cefbe4860"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"5413e844422079beabecee8ddbf4fb3898df053a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"03e12db7_5d479191","updated":"2026-03-09 06:21:59.000000000","message":"LGTM","commit_id":"43960baa5880b7fdf464e38373e5142cefbe4860"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"d3632e6a9c38071f5debe1208603bc93290076a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"193451b8_53414a80","updated":"2026-03-20 22:20:32.000000000","message":"recheck failed because it ran during OpenStack\u0027s broken tox era","commit_id":"43960baa5880b7fdf464e38373e5142cefbe4860"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nvme_library.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"07704d8e4785e83003d3541c38e2f8a39b9ff5d3","unresolved":true,"context_lines":[{"line_number":290,"context_line":"                fake.NAMESPACE_NAME, fake.HOST_NQN"},{"line_number":291,"context_line":"            )"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.assertEqual(fake.SUBSYSTEM, subsystem)"},{"line_number":294,"context_line":"        self.assertEqual(fake.UUID1, n_uuid)"},{"line_number":295,"context_line":"        self.library.client.get_subsystem_by_host.assert_called_once_with("},{"line_number":296,"context_line":"            fake.HOST_NQN)"}],"source_content_type":"text/x-python","patch_set":2,"id":"432d9495_d106f88a","line":293,"updated":"2025-11-21 14:40:16.000000000","message":"Should we also validate subsystem_uuid?","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"f664431ac561494404e1c2d402a8b9bfc3904eed","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                fake.NAMESPACE_NAME, fake.HOST_NQN"},{"line_number":291,"context_line":"            )"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.assertEqual(fake.SUBSYSTEM, subsystem)"},{"line_number":294,"context_line":"        self.assertEqual(fake.UUID1, n_uuid)"},{"line_number":295,"context_line":"        self.library.client.get_subsystem_by_host.assert_called_once_with("},{"line_number":296,"context_line":"            fake.HOST_NQN)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1b611192_3f571a7a","line":293,"in_reply_to":"432d9495_d106f88a","updated":"2025-12-02 06:44:03.000000000","message":"Done","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3a3acc840c6a484ad384661d7aab5e251496abdb","unresolved":true,"context_lines":[{"line_number":2938,"context_line":"        \"\"\"Add host nqn to the subsystem\"\"\""},{"line_number":2939,"context_line":""},{"line_number":2940,"context_line":"        body_post \u003d {"},{"line_number":2941,"context_line":"            \u0027nqn\u0027: host_nqn,"},{"line_number":2942,"context_line":"        }"},{"line_number":2943,"context_line":"        try:"},{"line_number":2944,"context_line":"            self.send_request("}],"source_content_type":"text/x-python","patch_set":2,"id":"8f8aab55_cb86e569","line":2941,"updated":"2025-12-18 08:54:29.000000000","message":"Do we need to check if the host is already mapped to the subsystem? Or does ONTAP take care of duplicate mappings?","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"}],"releasenotes/notes/bug-2078968-fix-nvme-namespace-mapping-failed-during-live-migration-bbd26bb157b076bf.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ec96ad0e6e7a03c8280600e27f980cda089e6c6f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Breaking Change: NetApp NVMe Subsystem Architecture Redesign"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    Implemented a significant architectural change to NVMe volume attachment"},{"line_number":7,"context_line":"    handling to address critical limitations with multi-attach workflows and"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"cb7dc3e3_c217042c","line":4,"updated":"2025-10-24 07:59:14.000000000","message":"This doesn\u0027t seem appropriate for a backport to a stable branch.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"1b55713dfc9490c76331b18d38ad21eac16a0b2b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Breaking Change: NetApp NVMe Subsystem Architecture Redesign"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    Implemented a significant architectural change to NVMe volume attachment"},{"line_number":7,"context_line":"    handling to address critical limitations with multi-attach workflows and"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"865d5c71_d08461b6","line":4,"in_reply_to":"cb7dc3e3_c217042c","updated":"2025-10-27 16:42:14.000000000","message":"Without these changes, the NVMe feature is effectively unusable for real-world provisioning workflows on ONTAP. We consistently hear that most customers have avoided or disabled NVMe because the current one-host-per-subsystem model breaks multi-attach and makes QoS enforcement inconsistent across connections to the same volume. As a result, NVMe has not been viable for live migration or other advanced provisioning activities.\n\nThe redesign to a shared subsystem model (many hosts attached through a single subsystem per namespace) directly removes these blockers:\n\n    Enables true multi-attach required for live migration and similar workflows\n    Restores consistent, enforceable QoS per volume/namespace\n    Unlocks NVMe workflows on ONTAP so NVMe is usable in production rather than a checkbox feature\n\nThis change is also critical for customers running RHOSP and ROSHO on older releases who need NVMe workflows and certification. Their certification and operations depend on multi-attach and reliable QoS; they cannot achieve that with the current architecture.\n\nWe acknowledge the compatibility impact. The documented upgrade path (backup, upgrade, restore under the new mapping) preserves data integrity.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fd0fb5c5b1046fbf782a928e00785a3d873fdb92","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * Take backup of all volumes using the old NVMe architecture"},{"line_number":35,"context_line":"    * Upgrade OpenStack to the version with the new architecture"},{"line_number":36,"context_line":"    * Restore volumes using the new many-to-one subsystem mapping model"},{"line_number":37,"context_line":"    * For assistance with migration planning and any questions about this"},{"line_number":38,"context_line":"      process, contact NetApp support who can provide guidance specific to"},{"line_number":39,"context_line":"      your environment and help minimize disruption during the transition."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ca96daab_ddfd15f3","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":71},"updated":"2025-11-21 14:49:33.000000000","message":"Why do you need to recreate the volume in this case? Since you were only changing the initialize connection workflow, I believe that the only thing needed would be to disconnect and reconnect the volume.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"698966669d81937bef4e3348baa97a398aee7d60","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * Take backup of all volumes using the old NVMe architecture"},{"line_number":35,"context_line":"    * Upgrade OpenStack to the version with the new architecture"},{"line_number":36,"context_line":"    * Restore volumes using the new many-to-one subsystem mapping model"},{"line_number":37,"context_line":"    * For assistance with migration planning and any questions about this"},{"line_number":38,"context_line":"      process, contact NetApp support who can provide guidance specific to"},{"line_number":39,"context_line":"      your environment and help minimize disruption during the transition."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"316769d4_3f2cdf3a","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":71},"in_reply_to":"044530ae_2874a799","updated":"2025-11-26 14:34:33.000000000","message":"yeah, just now I\u0027m realizing that this is the backport. It would be nice to have something in the master Branch reverting this.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"197e20dbdfa8f3e18c8123f2cbbdf88a89360b68","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * Take backup of all volumes using the old NVMe architecture"},{"line_number":35,"context_line":"    * Upgrade OpenStack to the version with the new architecture"},{"line_number":36,"context_line":"    * Restore volumes using the new many-to-one subsystem mapping model"},{"line_number":37,"context_line":"    * For assistance with migration planning and any questions about this"},{"line_number":38,"context_line":"      process, contact NetApp support who can provide guidance specific to"},{"line_number":39,"context_line":"      your environment and help minimize disruption during the transition."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"044530ae_2874a799","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":71},"in_reply_to":"07d66813_6d0d6614","updated":"2025-11-21 18:08:25.000000000","message":"So this is the backport patch to 2025.1. The original patch has landed into master and been backported to 2025.2 as well. I don\u0027t think the proper place is the modify a backport but instead a follow up should be made to master.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"3035aa8ec8c446559e821d64596b31e4c903b2db","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * Take backup of all volumes using the old NVMe architecture"},{"line_number":35,"context_line":"    * Upgrade OpenStack to the version with the new architecture"},{"line_number":36,"context_line":"    * Restore volumes using the new many-to-one subsystem mapping model"},{"line_number":37,"context_line":"    * For assistance with migration planning and any questions about this"},{"line_number":38,"context_line":"      process, contact NetApp support who can provide guidance specific to"},{"line_number":39,"context_line":"      your environment and help minimize disruption during the transition."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"07d66813_6d0d6614","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":71},"in_reply_to":"ca96daab_ddfd15f3","updated":"2025-11-21 15:24:41.000000000","message":"I\u0027d like to see an answer for this as well.","commit_id":"7df47080dd4326fac79cd6587f0d8caba6ad836c"}]}
