)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d200176215dcff84b9355db1473ec3418d9bde02","unresolved":true,"context_lines":[{"line_number":17,"context_line":"of trying a autodiscover, to ensure volume metadata such as the"},{"line_number":18,"context_line":"virtual_size will be gathered correctly."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Patial-Bug: #2073146"},{"line_number":21,"context_line":"Change-Id: I28df6ddfa4f62b440e01918958352ab186234f87"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"772e82e2_9ea5c01c","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":10},"updated":"2025-03-25 13:31:02.000000000","message":"Partial-Bug","commit_id":"ed470e7b9347af39af78017ec4acbcba5ac3008e"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c4164c66e9490076a4548e619d9324f156cc6ec0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"of trying a autodiscover, to ensure volume metadata such as the"},{"line_number":18,"context_line":"virtual_size will be gathered correctly."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Patial-Bug: #2073146"},{"line_number":21,"context_line":"Change-Id: I28df6ddfa4f62b440e01918958352ab186234f87"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"8ebac358_a4de5a8b","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":10},"in_reply_to":"772e82e2_9ea5c01c","updated":"2025-03-25 21:04:03.000000000","message":"Done","commit_id":"ed470e7b9347af39af78017ec4acbcba5ac3008e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"080aeaa73abb89b64ba5e1eb11990ff03d08e6e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4755752a_8f327c32","updated":"2025-03-26 14:51:52.000000000","message":"devstack-plugin-nfs-tempest-full fails w/ some related errors in c-vol","commit_id":"29250f7dc0ec0c05f9ecce9dafe5768cd6fe0bfb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"883dc5231b4ee29e64f2654e5780d0335a936710","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7e9f3d5c_afe46677","in_reply_to":"4755752a_8f327c32","updated":"2025-03-27 12:55:18.000000000","message":"This happened because of the following:\n1) Patch also depends on https://review.opendev.org/c/openstack/cinder/+/943660 to work properly\n2) Patch exposes a resize issue in the generic nfs driver addressed in patch https://review.opendev.org/c/openstack/cinder/+/943659\n\nShould I include a Depends-On in the commit message to ensure Zuul will pick them in the correct order, or is just keeping the patches in a relation chain enough?","commit_id":"29250f7dc0ec0c05f9ecce9dafe5768cd6fe0bfb"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"202a7fceaf43b34a8cb9811b3b9c45f4534495db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"14934ee9_a669773a","in_reply_to":"7e9f3d5c_afe46677","updated":"2025-12-17 14:36:53.000000000","message":"This has been addressed in current version.","commit_id":"29250f7dc0ec0c05f9ecce9dafe5768cd6fe0bfb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ef87d1c7ff0a2c6020cf9766c50ab71da2940f8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"21cbce94_31a96790","updated":"2025-04-17 22:26:21.000000000","message":"Code and tests mostly look good to me; the -1 is just to get your attention to the question inline.","commit_id":"1673524e857f0dcd7cf670129573d92f8dcd016c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"38400ba38d911f2680724a9735c8072888e9a34a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b8fe8245_c7fab1ec","updated":"2025-05-30 14:14:59.000000000","message":"Code and tests LGTM.  Thanks for the detailed comment in qemu_img_info(), it will help us avoid unpleasantness later.","commit_id":"2655e79a202dd7eff3f054ba91292669397ad95e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"273bb679a6540f15ac74152c9ebf54b8c11d6ad2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"c0c78a5e_0f440741","updated":"2025-04-23 12:58:07.000000000","message":"recheck\n\ndevstack-plugin-nfs-tempest-full has no logs","commit_id":"2655e79a202dd7eff3f054ba91292669397ad95e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1bf20bfe487633836ee44fe397b3d7acd4b9fa3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b16d1f2e_e75f77dc","updated":"2025-05-20 16:36:22.000000000","message":"recheck get fresh logs","commit_id":"2655e79a202dd7eff3f054ba91292669397ad95e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6a0a3a09fe88ef47282891500dbd31b5580c9b8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"8b97953d_1aa62862","updated":"2025-05-20 20:44:18.000000000","message":"recheck grenade-skip-level-always timed out","commit_id":"2655e79a202dd7eff3f054ba91292669397ad95e"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"24c3f5682ad1f4d05245bbce8833e0e8321f38db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"6dfc421c_11bf2088","updated":"2025-06-27 14:46:38.000000000","message":"run-quobyteci\n\nlast failure was a test flakiness","commit_id":"690a2614ba77ae912c9e7e5cf0d04e19e6b4e8c4"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"7bac9344ae5fe778d080e7d015e858f8a158f2df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"b7b9325c_d004d8f7","updated":"2025-07-11 18:28:14.000000000","message":"recheck","commit_id":"3742c3a033c1133a0df91565a9a77ef502909eda"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"cc0edb13a401b76d39c7a587607cb6a317033d02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"27ece32c_ca7120b0","updated":"2025-10-27 10:31:04.000000000","message":"recheck - failed on ceph (not related)","commit_id":"f605cb750291fcd0eab3ae38d171e6d984064673"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"0fad05bc00aabc6b5ec66b314057512dba624f94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"3edba719_b085fe93","updated":"2025-10-31 15:59:45.000000000","message":"-W this patch until #943660 is merged.","commit_id":"87e7374116181d71709d70c828ff69f0a29021cd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"00d9a373d9c63c48ff84304d98bd1c7a1244c3ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"613207d9_8badb7d6","updated":"2025-12-15 14:50:34.000000000","message":"Revisions since PS 16 LGTM.","commit_id":"fbd2b22ff194039bcfcd57306b3e9a4be7def440"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"f37240a6de650efd0901d9d687038e2aa5d88bea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"677598ae_e36fee0d","updated":"2025-12-19 15:09:21.000000000","message":"lgtm","commit_id":"d961d3c88905639358b3af02211da52544a26991"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f729aafcaf6f058008f84cba183420df33921271","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"aa667b49_b8a2d3f8","updated":"2025-12-19 17:50:25.000000000","message":"recheck\n\npy313 unit tests failed in cinder.tests.unit.backup.drivers.test_backup_ceph.BackupCephTestCase.test_try_delete_base_image_diff_format","commit_id":"d961d3c88905639358b3af02211da52544a26991"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a9f580f00b0973794e3b454f5abfe7cea79bfd89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"52b58c24_c2a042de","updated":"2025-12-19 16:45:24.000000000","message":"recheck\n\nunrelated bug in cinder-plugin-ceph-tempest -  https://bugs.launchpad.net/cinder/+bug/2121941","commit_id":"d961d3c88905639358b3af02211da52544a26991"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"25607ff388262a602cdcb8f9d1fbdd2ba06bf28e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"dbdfa873_205bd391","updated":"2025-12-15 18:36:01.000000000","message":"recheck\n\nunrelated failure in openstack-tox-py310","commit_id":"d961d3c88905639358b3af02211da52544a26991"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"7040cb04b4d22a026a5b7a1c56f307dc4f44cc51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"2672e831_a55929da","updated":"2025-12-19 14:11:36.000000000","message":"recheck - want recheck quobyte results","commit_id":"d961d3c88905639358b3af02211da52544a26991"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"265d8e6d996c4b4747a958d4582878b9e730e999","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"5502f651_30c7359a","updated":"2025-12-16 07:24:05.000000000","message":"run-Quobyte CI","commit_id":"d961d3c88905639358b3af02211da52544a26991"}],"cinder/image/image_utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d200176215dcff84b9355db1473ec3418d9bde02","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        run_as_root: bool \u003d True,"},{"line_number":164,"context_line":"        force_share: bool \u003d False,"},{"line_number":165,"context_line":"        allow_qcow2_backing_file: bool \u003d False,"},{"line_number":166,"context_line":"        img_format: str \u003d None) -\u003e imageutils.QemuImgInfo:"},{"line_number":167,"context_line":"    \"\"\"Return an object containing the parsed output from qemu-img info.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    format_name \u003d cinder.privsep.format_inspector.get_format_if_safe("}],"source_content_type":"text/x-python","patch_set":5,"id":"1962c2fd_024083c4","line":166,"range":{"start_line":166,"start_character":20,"end_line":166,"end_character":23},"updated":"2025-03-25 13:31:02.000000000","message":"Needs type Optional[str]","commit_id":"ed470e7b9347af39af78017ec4acbcba5ac3008e"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c4164c66e9490076a4548e619d9324f156cc6ec0","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        run_as_root: bool \u003d True,"},{"line_number":164,"context_line":"        force_share: bool \u003d False,"},{"line_number":165,"context_line":"        allow_qcow2_backing_file: bool \u003d False,"},{"line_number":166,"context_line":"        img_format: str \u003d None) -\u003e imageutils.QemuImgInfo:"},{"line_number":167,"context_line":"    \"\"\"Return an object containing the parsed output from qemu-img info.\"\"\""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    format_name \u003d cinder.privsep.format_inspector.get_format_if_safe("}],"source_content_type":"text/x-python","patch_set":5,"id":"15db9c03_7575de8e","line":166,"range":{"start_line":166,"start_character":20,"end_line":166,"end_character":23},"in_reply_to":"1962c2fd_024083c4","updated":"2025-03-25 21:04:03.000000000","message":"Done","commit_id":"ed470e7b9347af39af78017ec4acbcba5ac3008e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ef87d1c7ff0a2c6020cf9766c50ab71da2940f8a","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        raise exception.Invalid("},{"line_number":178,"context_line":"            reason\u003d_(\u0027Image/Volume failed safety check\u0027))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    img_format \u003d img_format or format_name"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    cmd \u003d [\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":183,"context_line":"           \u0027-f\u0027, img_format, \u0027--output\u003djson\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"93ace63c_c89b772c","line":180,"updated":"2025-04-17 22:26:21.000000000","message":"Just thinking this through ... the img_format parameter will be used by the filesystem-based drivers, and they\u0027ll either be passing in \u0027raw\u0027 or \u0027qcow2\u0027 (and presumably, the data at \u0027path\u0027 will match that).  Since _qemu_img_info_base() that\u0027s making the call sets allow_qcow2_backing_file\u003dTrue, the call at line 169 should return OK for our use-case: if it\u0027s a qcow2 with backing file, that\u0027s fine; if it\u0027s a raw file containing a qcow2, the format_inspector will detect it as a qcow2 and will be OK if it has a backing file (whose path the _qemu_img_info_base() function will subject to further checks), and if it\u0027s a qcow2 with dangerous/unsupported features, then we don\u0027t want to deal with it anyway, because the cinder filesystem-type drivers don\u0027t use those qcow2 features, so somehow someone monkeyed with the volume\u0027s content, which is bad.  Likewise, if the volume contains an image in some other format, if it fails the inspection, we aren\u0027t going to want to deal with it anyway.  So the key point here is that we may be looking at a raw volume, but we could still raise an Invalid because we are using the format_inspector to look at its content.\n\nAnyway, if we get to line 180, the format we passed in will get priority, so if it\u0027s \u0027raw\u0027 then we\u0027ll call \u0027qemu-img info -f raw\u0027 on the path, which is what we want; and if it\u0027s \u0027qcow2\u0027 then we actually have a \u0027qcow2\u0027 (which hopefully is what the auto-detect at line 169 determined as well), and further, it\u0027s a qcow2 that\u0027s safe to pass to the \u0027qemu-img info -f qcow2\u0027 call, because we have already run the format_inspector on it.\n\nSorry this comment is so long, but my initial thought was that if img_format is \u0027raw\u0027 we should just skip lines 169-178 entirely, but now I\u0027m thinking it can\u0027t hurt to run the path through the format_inspector anyway.  If img_format is \u0027raw\u0027, then the format_name coming out of the format_inspector could be anything; but if img_format is \u0027qcow2\u0027, then the format_name should definitely be \u0027qcow2\u0027(even if it\u0027s a qcow2 containing a vmdk or something).  I wonder if we should check for that before calling \u0027qemu-img info -f qcow2\u0027 on the path.  If the thing is not a qcow2, then calling \u0027qemu-img info -f qcow2\u0027 on it should raise a ProcessExecutionError at line 190, but maybe we should check ourselves and raise Invalid and not make the \u0027qemu-img info\u0027 call at all?","commit_id":"1673524e857f0dcd7cf670129573d92f8dcd016c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"620138d63fd13d417f65ad0a00b269d59ccb3094","unresolved":true,"context_lines":[{"line_number":186,"context_line":"        img_format \u003d format_name"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    cmd \u003d [\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":189,"context_line":"           \u0027-f\u0027, img_format, \u0027--output\u003djson\u0027]"},{"line_number":190,"context_line":"    if force_share:"},{"line_number":191,"context_line":"        cmd.append(\u0027--force-share\u0027)"},{"line_number":192,"context_line":"    cmd.append(path)"}],"source_content_type":"text/x-python","patch_set":15,"id":"4aa48679_dc9683c2","line":189,"updated":"2025-04-22 20:54:25.000000000","message":"This fails mypy because img_format can be None here.","commit_id":"7f492ac5921c8faaaec602b010dab322d2722be6"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"202a7fceaf43b34a8cb9811b3b9c45f4534495db","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        img_format \u003d format_name"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    cmd \u003d [\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027qemu-img\u0027, \u0027info\u0027,"},{"line_number":189,"context_line":"           \u0027-f\u0027, img_format, \u0027--output\u003djson\u0027]"},{"line_number":190,"context_line":"    if force_share:"},{"line_number":191,"context_line":"        cmd.append(\u0027--force-share\u0027)"},{"line_number":192,"context_line":"    cmd.append(path)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3907064c_8ceed579","line":189,"in_reply_to":"4aa48679_dc9683c2","updated":"2025-12-17 14:36:53.000000000","message":"This has been addressed in current version.","commit_id":"7f492ac5921c8faaaec602b010dab322d2722be6"}]}
