)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"2b8dcde97e0a939e15b860c2839c672db9d9e96b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"99203b17_834697cb","updated":"2025-03-27 12:49:41.000000000","message":"recheck","commit_id":"ef3146ae7c9629147a0be6141d552a74f4b29537"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ed77839fb14fcfbdbd05f95d06119481b15f48f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f5fc7c67_1b455a86","updated":"2025-03-27 20:01:30.000000000","message":"recheck","commit_id":"ef3146ae7c9629147a0be6141d552a74f4b29537"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d7b775da1712d01f196bebf84cf98ed203e34563","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7ff9e3a1_8dca0274","updated":"2025-04-16 01:49:11.000000000","message":"LGTM.","commit_id":"dc092d2a113537b540b13957fb78a7fdce8039ce"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f525a55367487b5b94efc541b3b9670eb536a4af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ded74ad1_37149aff","updated":"2025-05-30 14:07:52.000000000","message":"Renewing my +2 from PS6 ... there have been no code changes, just rebases.","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"f25805cecdcbc5762c424bee1c68e9ec1754b65c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"7b04eba2_8ab53ba1","updated":"2025-06-26 05:43:19.000000000","message":"The remotefs driver changes causes ci fails for the Quobyte driver, possibly other dependent drivers, too. I\u0027ll check the details and follow up, just wanted to report this right away.","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"e3997b022d9a59c3926f3dd9737ded57379325b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ab141a35_4afdbd4d","in_reply_to":"03fdbe54_2f3fee50","updated":"2025-06-27 13:36:12.000000000","message":"Hi Fernando, thanks for the change update, looks good from my point of view. CI is also happy and reports success (see latest quobyteci entry).\nMy apologies for the missing reports, i am slowly rebuilding the quobyte ci and while it runs and reports in Gerrit now the result data is stored only locally and not published so far. I\u0027ll work on that.","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"68c7148806bf759575fb7e119b5b4fe50ac0eb60","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"d22aa4d3_945aed1b","in_reply_to":"7b04eba2_8ab53ba1","updated":"2025-06-26 12:47:44.000000000","message":"So, this fails due to the key \u0027format\u0027 not being present in the admin metadata in about 20 tempest tests in our CI:\n\nTraceback (most recent call last):                                                                                     \n[..]                                                                                \n  File \"/opt/stack/cinder/cinder/volume/manager.py\", line 1254, in create_snapshot                                     \n    model_update \u003d self.driver.create_snapshot(snapshot)                                                               \n  File \"/opt/stack/data/venv/lib/python3.10/site-packages/oslo_concurrency/lockutils.py\", line 415, in inner           \n    return f(*args, **kwargs)                                                                                          \n  File \"/opt/stack/cinder/cinder/volume/drivers/quobyte.py\", line 516, in create_snapshot                              \n    return self._create_snapshot(snapshot)                                                                             \n  File \"/opt/stack/cinder/cinder/volume/drivers/remotefs.py\", line 1755, in _create_snapshot                           \n    admin_metadata[\u0027base_format\u0027] \u003d admin_metadata[\u0027format\u0027]                                                           \nKeyError: \u0027format\u0027\n\nI checked but weirdly the Quobyte driver doesn\u0027t do much but call the parent method in _delete_snapshot where the field should be set. So I currently do not see why it should behave differently to the NFS driver in this context.\n\nIs there a CI testing the generic NFS driver to verify this is not a more general issue?","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3c79133b465e2b6268ccc8355149f952ab02c367","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"e78e6597_578d0adb","in_reply_to":"9801cdac_03fb79ba","updated":"2025-06-26 13:55:56.000000000","message":"The volume format is set by the generic NFS driver in line https://github.com/openstack/cinder/blob/53245bce31549a29ce74dd49de6c9f7417868126/cinder/volume/drivers/remotefs.py#L333\n\nA possible solution would be to do the same for the Quobyte driver in https://github.com/openstack/cinder/blob/53245bce31549a29ce74dd49de6c9f7417868126/cinder/volume/drivers/quobyte.py#L583\n\nIt would be something like the snippet below:\n\n```\n        self.format \u003d None\n        if self.configuration.quobyte_qcow2_volumes:\n            format \u003d \u0027qcow2\u0027\n            self._create_qcow2_file(volume_path, volume_size)\n        else:\n            self.format \u003d \u0027raw\u0027\n            if self.configuration.quobyte_sparsed_volumes:\n                self._create_sparsed_file(volume_path, volume_size)\n            else:\n                self._create_regular_file(volume_path, volume_size)\n       \n        volume.admin_metadata[\u0027format\u0027] \u003d self.format\n        with volume.obj_as_admin():\n            volume.save()\n\n       self._set_rw_permissions_for_all(volume_path)\n```","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"23ce515bf3d3d7bf6f035f8c8c8180c425ba20e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"f8bfc878_203aaf13","in_reply_to":"ab141a35_4afdbd4d","updated":"2025-07-07 10:00:33.000000000","message":"Awesome! Thanks Silvan!","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08a510628626e639ab665f4414fe08084ce01af1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"9801cdac_03fb79ba","in_reply_to":"d22aa4d3_945aed1b","updated":"2025-06-26 13:24:18.000000000","message":"Hi Silvan, would you mind sharing the CI results and Cinder logs? I\u0027ve been testing with the generic nfs driver so far. I suppose Quobyte has its implementation of the create_volume() function that doesn\u0027t set the \u0027format\u0027 field (as we do in the Generic NFS driver), but reuses the snapshot functionality entirely, maybe?. I will take a look at the driver\u0027s code today, but the CI results and logs will help.","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"7e12b793a5922040b80fa9c5df609f5bfb072f08","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"03fdbe54_2f3fee50","in_reply_to":"e78e6597_578d0adb","updated":"2025-06-26 19:15:13.000000000","message":"I`ve made the change proposed to the Quotabyte driver above. \n\nSilvan, please let me know what your CI reports. In comments I see it only reports the following:\n\n\"cinder_quobyteci (NON VOTING! This CI is currently under construction) : FAILURE\"","commit_id":"61b9c320d4a2159b71f9ca156dac1c8a1fcb7e3c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3dcd256e434924de31e0f146a8ab9abbfce3cf6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"031a34eb_c719113d","updated":"2025-06-26 19:26:18.000000000","message":"Hold until the QuotaByte driver issue is sorted out.","commit_id":"cbab647e51c10d47e42a09c5aa4c466051c60975"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"f31e3b1754d5a2f54a850c06e1602d586944f42f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"12930c41_616ba6bf","updated":"2025-06-26 20:59:26.000000000","message":"Hold until the QuotaByte driver issue is sorted out.","commit_id":"7dbbe642e4c4e4bf93886a7052ec6908161f1974"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"32699e409eaa8e7864d9db3b8c70e8b49cbaeab9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"be442752_e597d553","updated":"2025-07-17 19:23:17.000000000","message":"Has a test been done along the lines of:\n   a) Run code before this patch\n   b) Create a volume + snapshot\n   c) Update to this patch\n   d) Delete the snapshot\n   \nIn that scenario, admin_metadata[\u0027base_format\u0027] would be missing upon snapshot delete -- what happens then?  Is it any worse than the current behavior?","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c16a3ecf91707ae4059b69689bde883ce2d4ac8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7470cf14_18996822","updated":"2025-07-07 21:05:32.000000000","message":"recheck","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8243c409035efa2fb0ed5247e42a3fe5b07816a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"e2f5bf7a_c482884c","updated":"2025-07-08 12:28:39.000000000","message":"recheck\n\ntempest-integrated-storage failed in backup tests","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"23ce515bf3d3d7bf6f035f8c8c8180c425ba20e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"09d10a92_4dd8bdb3","updated":"2025-07-07 10:00:33.000000000","message":"recheck - quotabyte driver issues has been addressed","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"bcf5622c743c4ebbb5b1d1c0c06a3bae312f72ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"091802ac_67416e2f","updated":"2025-07-09 12:08:02.000000000","message":"run-quobyteci","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"886c58fe88cadc447fe9e7f7fd2a18906c5cc299","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"a249b2d5_b60ad3b4","in_reply_to":"9440d4af_27cb8bc0","updated":"2025-12-15 16:30:00.000000000","message":"I\u0027m addressing the upgrade scenario in lines 1411-1482. The code tries recoverying the base_format for the cases we are sure we can determine the volume\u0027s original format. \n\n- Raw volumes: Code inspects the base file and if `raw` is detected, it recovers `base_format\u003d\u0027raw\u0027`. I believe this is going to be the most common scenario.\n\n- Base file already merged: This ocurrs from a prior online delete so we can assume base_format is `qcow2`.\n\n- Raw volume with `qcow2` image inside: We cannot reliably detect using the format_inpector or `qemu-img info`. For this scenario I\u0027m only logging a warning message. Code makes no changes to `format` or `base_format` fields.","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aea047ddf7c679193b67ca913d00dec1397f61b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"0dad1620_8f285f9d","in_reply_to":"a249b2d5_b60ad3b4","updated":"2025-12-19 15:44:26.000000000","message":"Done","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8ddbdc3ec341545709ce72da991ea2c753c9a7e9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"9440d4af_27cb8bc0","in_reply_to":"be442752_e597d553","updated":"2025-07-21 14:14:14.000000000","message":"\u003cMark this question unresolved\u003e","commit_id":"b75da03d4d57fe52f211ec5f7f32e5992ff24302"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d42f125fc0e7bac1072186592e1735cded13e0bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"2b3360bb_911a7bf3","updated":"2025-10-15 09:45:35.000000000","message":"run-quobyteci\n\nLast run failed on a flaky test.","commit_id":"707fb0221ceec726ad639a79649c4ba49b6f7899"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"39417c0b1be250b46607990a50eab4a97f91cbf7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"d253d757_d3ae069d","updated":"2025-10-31 16:03:18.000000000","message":"-W until we complete the format recovery part","commit_id":"091299e265cd41c357af5b4ce1a1381b2d3e1b49"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e57191940fed0f9d3e9b389d1870019597bc1838","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"51dc0d58_700aa286","updated":"2025-10-27 10:29:10.000000000","message":"recheck","commit_id":"091299e265cd41c357af5b4ce1a1381b2d3e1b49"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"8b6c8f9b8f69fb789d4edea2dee19995739894ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"8373c4a1_db7840ee","updated":"2025-11-06 09:57:38.000000000","message":"run-quobyteci","commit_id":"8d9c9e567c4802e656cba27aa45a4d42e605b005"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"31411d41c171faa3bd589a26128670c9c04d7329","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"b1290ca6_6e5b557c","updated":"2025-12-11 04:51:06.000000000","message":"Code and tests look good to me.  I think Nimesh answered Anthony\u0027s question in _delete_snapshot() in remotefs.py; I thought about it but couldn\u0027t come up with different variable names that didn\u0027t have their own problems, so it may be best to leave it as is.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"833cb78f0788fe97fa0c0c56fd0268b14d3a615b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"37d66015_57a468b0","updated":"2025-12-15 14:32:28.000000000","message":"Did we agree we need a release note / reno? I think that would be good to have","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"244701d619304e1fec6ad1f3be0446a410794b50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"c6da8577_af9a00fe","updated":"2025-11-21 15:18:02.000000000","message":"Some minor comments here.  Nothing looks amiss, and it seems that Eric Harney\u0027s comments were addressed.  Will issue +1 after the comments below are acknowledged/answered.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3068409fcaec064a8dc05c0a64b81a0f27b1c101","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"3cf9a2c7_15a8826b","updated":"2025-11-11 14:46:55.000000000","message":"recheck","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"8330ccee1bf89dd8f0e5a2e9fa1cda5f175c90fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"6457e887_f875692d","in_reply_to":"c6da8577_af9a00fe","updated":"2025-11-21 15:19:20.000000000","message":"Actually, I think maybe Eric\u0027s other comment needs to be responded to as well before I can issue +1.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f26d5edd4663a7c16114cd3f43b15d6aa3190d8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"3567d80b_f74a7d00","updated":"2025-12-16 19:39:10.000000000","message":"Changes between PS 25 and 27 look fine, so renewing my +2.","commit_id":"8c03308ed6c6b4d44a2ffeb5f4ea7817d8f91900"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"d85b5fd1345550d8cca7782d11c037544a9ed795","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"6ac99073_6dd65c39","updated":"2025-12-19 14:11:30.000000000","message":"recheck - want recheck quobyte results","commit_id":"8c03308ed6c6b4d44a2ffeb5f4ea7817d8f91900"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"02ba1158f72d1905a4b1261f2ef7fb3db1fa5b11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"d749ee64_c23752a1","updated":"2025-12-19 14:17:01.000000000","message":"run-Quobyte CI\n\nQuobyte CI will not pick up on general rechecks, only targeted or patch updates.","commit_id":"8c03308ed6c6b4d44a2ffeb5f4ea7817d8f91900"}],"cinder/tests/unit/volume/drivers/test_remotefs.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"244701d619304e1fec6ad1f3be0446a410794b50","unresolved":true,"context_lines":[{"line_number":380,"context_line":"        self._driver._write_info_file.assert_called_once_with("},{"line_number":381,"context_line":"            mock.sentinel.fake_info_path, expected_info)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @ddt.data({\u0027read_info\u0027: {\u0027active\u0027: \u0027snap2\u0027, \u0027snap1\u0027: \u0027snap1\u0027,"},{"line_number":384,"context_line":"                             \u0027snap2\u0027: \u0027snap2\u0027},"},{"line_number":385,"context_line":"               \u0027snap_info\u0027: None,"},{"line_number":386,"context_line":"               \u0027expected_snapshot_ids\u0027: [\u0027snap1\u0027, \u0027snap2\u0027]},"}],"source_content_type":"text/x-python","patch_set":25,"id":"d0f3fe7e_f79ece5e","line":383,"updated":"2025-11-21 15:18:02.000000000","message":"I guess both read_info and snap_info being present isn\u0027t a valid test?","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        self._driver._write_info_file.assert_called_once_with("},{"line_number":381,"context_line":"            mock.sentinel.fake_info_path, expected_info)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    @ddt.data({\u0027read_info\u0027: {\u0027active\u0027: \u0027snap2\u0027, \u0027snap1\u0027: \u0027snap1\u0027,"},{"line_number":384,"context_line":"                             \u0027snap2\u0027: \u0027snap2\u0027},"},{"line_number":385,"context_line":"               \u0027snap_info\u0027: None,"},{"line_number":386,"context_line":"               \u0027expected_snapshot_ids\u0027: [\u0027snap1\u0027, \u0027snap2\u0027]},"}],"source_content_type":"text/x-python","patch_set":25,"id":"36c9f38c_c0a248c3","line":383,"in_reply_to":"d0f3fe7e_f79ece5e","updated":"2025-12-15 16:05:49.000000000","message":"This is no longer necessary with volume and snap_info splitted in two methods.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6235e5667eb4ff3ad17ec659b2ed45b009ea74b8","unresolved":true,"context_lines":[{"line_number":1390,"context_line":"            # Active file has changed"},{"line_number":1391,"context_line":"            snap_info[\u0027active\u0027] \u003d base_file"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"            # Update volume format to match the new active"},{"line_number":1394,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d ("},{"line_number":1395,"context_line":"                snapshot_path_img_info.backing_file_format)"},{"line_number":1396,"context_line":"            with snapshot.volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"1c035077_5599eccf","line":1393,"updated":"2025-06-12 13:32:05.000000000","message":"Is this relying on auto-detection of format?","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3d534bdcfdbc5e63546efe4603032819c1012519","unresolved":true,"context_lines":[{"line_number":1390,"context_line":"            # Active file has changed"},{"line_number":1391,"context_line":"            snap_info[\u0027active\u0027] \u003d base_file"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"            # Update volume format to match the new active"},{"line_number":1394,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d ("},{"line_number":1395,"context_line":"                snapshot_path_img_info.backing_file_format)"},{"line_number":1396,"context_line":"            with snapshot.volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"8271147e_f2638f94","line":1393,"in_reply_to":"12bcb17b_2375b2e1","updated":"2025-06-24 22:05:00.000000000","message":"That is a really good point that led me to identify an issue I\u0027m not covering in this patch. \n\nI tried the following scenario:\n\n1) create a raw volume vol1 and attach it to server1\n2) from inside the vm write a qcow2 volume to the device corresponding to vol1\n3) create a snapshot from vol1 (the volume_admin_metadata is updated to qcow2 from raw)\n4) detach vol1\n5) delete the snapshot for vol1\n\nThe volume_admin_metadata isn\u0027t set back to raw when the snapshot is deleted. This happens because the backing file format reported for the snapshot outputs qcow2 instead of raw, as in the example below:\n\nThe original volume vol1, after being changed from inside the VM:\n```\nimage: volume-7f3fd365-4828-4264-9ae1-cfb65cdf8bde                                                                                                                                                                                            \nfile format: qcow2                                                                                                                                                                                                                            \nvirtual size: 10 GiB (10737418240 bytes)                                                                                                                                                                                                      \ndisk size: 196 KiB                                                                                                                                                                                                                            \ncluster_size: 65536                                                                                                                                                                                                                           \nFormat specific information:                                                                                                                                                                                                                  \n    compat: 1.1                                                                                                                                                                                                                               \n    compression type: zlib                                                                                                                                                                                                                    \n    lazy refcounts: false                                                                                                                                                                                                                     \n    refcount bits: 16                                                                                                                                                                                                                         \n    corrupt: false                                                                                                                                                                                                                            \n    extended l2: false   \n```\n\nsnapshot\u0027s ``qemu-img info`` output (note the baacking file format outputs `qcow2` instead of `raw`):\n```\nimage: volume-7f3fd365-4828-4264-9ae1-cfb65cdf8bde.8de4e224-9e53-4c0a-9afa-8fc059ef8a6d                                                                                                                                                       \nfile format: qcow2                                                                                                                                                                                                                            \nvirtual size: 1 GiB (1073741824 bytes)                                                                                                                                                                                                        \ndisk size: 196 KiB                                                                                                                                                                                                                            \ncluster_size: 65536                                                                                                                                                                                                                           \nbacking file: volume-7f3fd365-4828-4264-9ae1-cfb65cdf8bde                                                                                                                                                                                     \nbacking file format: qcow2                                                                                                                                                                                                                    \nFormat specific information:                                                                                                                                                                                                                  \n    compat: 1.1                                                                                                                                                                                                                               \n    compression type: zlib                                                                                                                                                                                                                    \n    lazy refcounts: false                                                                                                                                                                                                                     \n    refcount bits: 16                                                                                                                                                                                                                         \n    corrupt: false                                                                                                                                                                                                                            \n    extended l2: false   \n```\n\n\n\n\n    \nI think to fix this problem, I can\u0027t just update the \"original\" format and assume we should be able to retrieve it from the backing_file_format field.","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"10dba03b50976db12d579e2fdb6524015e58f88a","unresolved":true,"context_lines":[{"line_number":1390,"context_line":"            # Active file has changed"},{"line_number":1391,"context_line":"            snap_info[\u0027active\u0027] \u003d base_file"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"            # Update volume format to match the new active"},{"line_number":1394,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d ("},{"line_number":1395,"context_line":"                snapshot_path_img_info.backing_file_format)"},{"line_number":1396,"context_line":"            with snapshot.volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"12bcb17b_2375b2e1","line":1393,"in_reply_to":"1c035077_5599eccf","updated":"2025-06-24 18:55:20.000000000","message":"I think not - this is reading the backing_file_format field from qemu-img info which would have been set by us when creating the qcow2 file.","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"23ce515bf3d3d7bf6f035f8c8c8180c425ba20e3","unresolved":false,"context_lines":[{"line_number":1390,"context_line":"            # Active file has changed"},{"line_number":1391,"context_line":"            snap_info[\u0027active\u0027] \u003d base_file"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"            # Update volume format to match the new active"},{"line_number":1394,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d ("},{"line_number":1395,"context_line":"                snapshot_path_img_info.backing_file_format)"},{"line_number":1396,"context_line":"            with snapshot.volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"1bf623e4_c563532a","line":1393,"in_reply_to":"32d093b8_24b33d63","updated":"2025-07-07 10:00:33.000000000","message":"Done - Silvan","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"869437ca6b5b40693bea68fa1bf39c21bfeac6da","unresolved":true,"context_lines":[{"line_number":1390,"context_line":"            # Active file has changed"},{"line_number":1391,"context_line":"            snap_info[\u0027active\u0027] \u003d base_file"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"            # Update volume format to match the new active"},{"line_number":1394,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d ("},{"line_number":1395,"context_line":"                snapshot_path_img_info.backing_file_format)"},{"line_number":1396,"context_line":"            with snapshot.volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"32d093b8_24b33d63","line":1393,"in_reply_to":"8271147e_f2638f94","updated":"2025-06-25 13:54:27.000000000","message":"I proposed a change to prevent the issue above and ensure that we can set the original format back without relying on autodetection.\n\nOn snapshot creation, the code stores the original format in volume_admin_metadata in the field name ``base_format`` and reverts ``format`` to its original value when an offline snapshot deletion occurs. This isn\u0027t required for online snapshot deletion as in this case the data is merged from the backing file to the snapshot file, and the qcow2 snapshot file becomes the primary.","commit_id":"c7ef9ee98cc5533c7824a5d5f9bf7eee4c43a77b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"32699e409eaa8e7864d9db3b8c70e8b49cbaeab9","unresolved":true,"context_lines":[{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        self._nova_assisted_vol_snap_delete(context, snapshot, delete_info)"},{"line_number":1864,"context_line":""},{"line_number":1865,"context_line":"        if update_format:"},{"line_number":1866,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d \u0027qcow2\u0027"},{"line_number":1867,"context_line":"            with snapshot.volume.obj_as_admin():"},{"line_number":1868,"context_line":"                snapshot.volume.save()"}],"source_content_type":"text/x-python","patch_set":19,"id":"8c7ee478_de8a1322","side":"PARENT","line":1865,"updated":"2025-07-17 19:23:17.000000000","message":"Why is this case (format update for online blockRebase) no longer needed?","commit_id":"27373d61fe54e55afa91f1e93cc65d3dd0582f9f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        self._nova_assisted_vol_snap_delete(context, snapshot, delete_info)"},{"line_number":1864,"context_line":""},{"line_number":1865,"context_line":"        if update_format:"},{"line_number":1866,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d \u0027qcow2\u0027"},{"line_number":1867,"context_line":"            with snapshot.volume.obj_as_admin():"},{"line_number":1868,"context_line":"                snapshot.volume.save()"}],"source_content_type":"text/x-python","patch_set":19,"id":"c699e531_3c258857","side":"PARENT","line":1865,"in_reply_to":"4b69457c_80903e06","updated":"2025-12-15 16:05:49.000000000","message":"Done","commit_id":"27373d61fe54e55afa91f1e93cc65d3dd0582f9f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"33c34292871b813a406348c56275b1ddace0122e","unresolved":true,"context_lines":[{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        self._nova_assisted_vol_snap_delete(context, snapshot, delete_info)"},{"line_number":1864,"context_line":""},{"line_number":1865,"context_line":"        if update_format:"},{"line_number":1866,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d \u0027qcow2\u0027"},{"line_number":1867,"context_line":"            with snapshot.volume.obj_as_admin():"},{"line_number":1868,"context_line":"                snapshot.volume.save()"}],"source_content_type":"text/x-python","patch_set":19,"id":"c6b6ae28_458feac2","side":"PARENT","line":1865,"in_reply_to":"8c7ee478_de8a1322","updated":"2025-07-21 10:28:01.000000000","message":"I believe this is no longer required because the volume format is now updated on volume creation [1]. Also, for the case of online snapshot delete, the active image will always correspond to a qcow2 image even if all snapshots are deleted.\n\n[1] https://review.opendev.org/c/openstack/cinder/+/943660/19/cinder/volume/drivers/remotefs.py#b1865","commit_id":"27373d61fe54e55afa91f1e93cc65d3dd0582f9f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"85a2cf62c00b5479195aee10f67200fab7cf822d","unresolved":true,"context_lines":[{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        self._nova_assisted_vol_snap_delete(context, snapshot, delete_info)"},{"line_number":1864,"context_line":""},{"line_number":1865,"context_line":"        if update_format:"},{"line_number":1866,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d \u0027qcow2\u0027"},{"line_number":1867,"context_line":"            with snapshot.volume.obj_as_admin():"},{"line_number":1868,"context_line":"                snapshot.volume.save()"}],"source_content_type":"text/x-python","patch_set":19,"id":"4b69457c_80903e06","side":"PARENT","line":1865,"in_reply_to":"b7aff0a4_9c8b0ed6","updated":"2025-08-11 13:12:07.000000000","message":"You\u0027re right, I\u0027ve proposed a change to address this issue. \n\nFor the scenario of online snapshot deletion, when the base image (raw) is merged into the qcow2 snapshot (to become the new base), the base_format must reflect that change and be updated to qcow2 as well.","commit_id":"27373d61fe54e55afa91f1e93cc65d3dd0582f9f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9e9f01511b44f4a0ad16710be91a450bbc0330eb","unresolved":true,"context_lines":[{"line_number":1862,"context_line":""},{"line_number":1863,"context_line":"        self._nova_assisted_vol_snap_delete(context, snapshot, delete_info)"},{"line_number":1864,"context_line":""},{"line_number":1865,"context_line":"        if update_format:"},{"line_number":1866,"context_line":"            snapshot.volume.admin_metadata[\u0027format\u0027] \u003d \u0027qcow2\u0027"},{"line_number":1867,"context_line":"            with snapshot.volume.obj_as_admin():"},{"line_number":1868,"context_line":"                snapshot.volume.save()"}],"source_content_type":"text/x-python","patch_set":19,"id":"b7aff0a4_9c8b0ed6","side":"PARENT","line":1865,"in_reply_to":"c6b6ae28_458feac2","updated":"2025-07-21 14:27:59.000000000","message":"I don\u0027t think this is correct - in the situation where nova does a blockRebase, the original \"raw\" base file will become a qcow2 file.","commit_id":"27373d61fe54e55afa91f1e93cc65d3dd0582f9f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"31411d41c171faa3bd589a26128670c9c04d7329","unresolved":true,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"        if snapshot.id not in snap_info:"},{"line_number":1306,"context_line":"            # If snapshot info file is present, but snapshot record does not"},{"line_number":1307,"context_line":"            # exist, do not attempt to delete."},{"line_number":1308,"context_line":"            # (This happens, for example, if snapshot_create failed due to lack"},{"line_number":1309,"context_line":"            # of permission to write to the share.)"},{"line_number":1310,"context_line":"            LOG.info(\u0027Snapshot record for %s is not present, allowing \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"2186767a_849d8402","line":1307,"updated":"2025-12-11 04:51:06.000000000","message":"This block is a bit hinky.  (1) because empty_if_missing\u003dTrue at line 1303, we have no idea if the info file exists or not.  (2) the log message at lines 1310-1311 says \"allowing delete to proceed\" but the return at line 1312 means that we are *not* allowing the delete to proceed.  (This is a really minor point in the big scheme of things, and not part of your change, anyway.)","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"        if snapshot.id not in snap_info:"},{"line_number":1306,"context_line":"            # If snapshot info file is present, but snapshot record does not"},{"line_number":1307,"context_line":"            # exist, do not attempt to delete."},{"line_number":1308,"context_line":"            # (This happens, for example, if snapshot_create failed due to lack"},{"line_number":1309,"context_line":"            # of permission to write to the share.)"},{"line_number":1310,"context_line":"            LOG.info(\u0027Snapshot record for %s is not present, allowing \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"01a1ac05_fdeeed87","line":1307,"in_reply_to":"2186767a_849d8402","updated":"2025-12-15 16:05:49.000000000","message":"I will address that in a separate patch.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"244701d619304e1fec6ad1f3be0446a410794b50","unresolved":true,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"        is_oldest_snapshot \u003d False"},{"line_number":1345,"context_line":"        if base_id is None:"},{"line_number":1346,"context_line":"            # This means we are deleting the latest snapshot"},{"line_number":1347,"context_line":"            is_oldest_snapshot \u003d True"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        # Find what file has this as its backing file"}],"source_content_type":"text/x-python","patch_set":25,"id":"c22f2448_00691db1","line":1346,"updated":"2025-11-21 15:18:02.000000000","message":"Why is it named \"oldest\" if we\u0027re deleting the latest?\n\nI *think* \"latest\" should say \"last\" based on context below.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e4a49369d851fed36d64932f039070a9495d581b","unresolved":true,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"        is_oldest_snapshot \u003d False"},{"line_number":1345,"context_line":"        if base_id is None:"},{"line_number":1346,"context_line":"            # This means we are deleting the latest snapshot"},{"line_number":1347,"context_line":"            is_oldest_snapshot \u003d True"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        # Find what file has this as its backing file"}],"source_content_type":"text/x-python","patch_set":25,"id":"fdc08c6e_7566d5f7","line":1346,"range":{"start_line":1346,"start_character":45,"end_line":1346,"end_character":51},"updated":"2025-11-21 14:52:26.000000000","message":"it should be \u0027oldest\u0027 snapshot for this condition","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"        is_oldest_snapshot \u003d False"},{"line_number":1345,"context_line":"        if base_id is None:"},{"line_number":1346,"context_line":"            # This means we are deleting the latest snapshot"},{"line_number":1347,"context_line":"            is_oldest_snapshot \u003d True"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        # Find what file has this as its backing file"}],"source_content_type":"text/x-python","patch_set":25,"id":"bc34c2ac_845579f4","line":1346,"in_reply_to":"c22f2448_00691db1","updated":"2025-12-15 16:05:49.000000000","message":"Changed to `is_last_snapshot`.\n\nSnapshots are merged into its backfile for detached operations so we could conclude the last snapshot to get deleted should also be the oldest. \n\nThe problem is that if we mix online (attached) and offline (detached) snapshot delete operations this might not always be the case (If we delete a snapshot online and then the last offline).","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"        is_oldest_snapshot \u003d False"},{"line_number":1345,"context_line":"        if base_id is None:"},{"line_number":1346,"context_line":"            # This means we are deleting the latest snapshot"},{"line_number":1347,"context_line":"            is_oldest_snapshot \u003d True"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"        # Find what file has this as its backing file"}],"source_content_type":"text/x-python","patch_set":25,"id":"1d7b37c2_1268a4c8","line":1346,"range":{"start_line":1346,"start_character":45,"end_line":1346,"end_character":51},"in_reply_to":"fdc08c6e_7566d5f7","updated":"2025-12-15 16:05:49.000000000","message":"Done","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"244701d619304e1fec6ad1f3be0446a410794b50","unresolved":true,"context_lines":[{"line_number":1681,"context_line":"                       new_snap_path]"},{"line_number":1682,"context_line":"            self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"    def _get_volume_snapshots(self,"},{"line_number":1685,"context_line":"                              volume: Optional[objects.Volume] \u003d None,"},{"line_number":1686,"context_line":"                              snap_info: Optional[dict] \u003d None) -\u003e List[str]:"},{"line_number":1687,"context_line":"        \"\"\"Get list of existing snapshots for a volume."}],"source_content_type":"text/x-python","patch_set":25,"id":"a1a3321e_55646a8f","line":1684,"updated":"2025-11-21 15:18:02.000000000","message":"It looks like volume is ignored completely if snap_info is not None.\n\nI wonder if this should be separated out into two methods, one for a volume and one for a snap_info (with the volume version calling the snap_info version).\n\nI am not going to enforce this with my review or anything, just some thoughts to maybe make it more clear.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"08834d5f834cb5714b0cd736e2ecebdf1e38cbbf","unresolved":false,"context_lines":[{"line_number":1681,"context_line":"                       new_snap_path]"},{"line_number":1682,"context_line":"            self._execute(*command, run_as_root\u003dself._execute_as_root)"},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"    def _get_volume_snapshots(self,"},{"line_number":1685,"context_line":"                              volume: Optional[objects.Volume] \u003d None,"},{"line_number":1686,"context_line":"                              snap_info: Optional[dict] \u003d None) -\u003e List[str]:"},{"line_number":1687,"context_line":"        \"\"\"Get list of existing snapshots for a volume."}],"source_content_type":"text/x-python","patch_set":25,"id":"20ea3616_785c6f6a","line":1684,"in_reply_to":"a1a3321e_55646a8f","updated":"2025-12-15 16:05:49.000000000","message":"Yeah, the function silently ignores the volume param if snap_info is provided. I agree that getting it split in two methods will improve code clarity so I decided for making the change.","commit_id":"3bddc3aa45efb9b252a158e1b95cc061b7253462"}]}
