)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"620c3f3b75cac3d0cf3310e2bb87b1bf6156d60e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8a0eb804_cfcb4639","updated":"2026-09-04 13:50:41.000000000","message":"@eharney@redhat.com thanks for the review. I addresedd your feedback. please take a look.","commit_id":"00acd4399abf793a185e9ae761b35232560015b9"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"233b944cc8036afaa153d73af965d3681d62bc2c","unresolved":true,"context_lines":[{"line_number":1704,"context_line":"        incremental \u003d from_snapshot is not None"},{"line_number":1705,"context_line":"        extents: list[dict] \u003d []"},{"line_number":1706,"context_line":""},{"line_number":1707,"context_line":"        def iter_cb(ext_offset: int, ext_length: int, ext_exists: bool) \\"},{"line_number":1708,"context_line":"                -\u003e None:"},{"line_number":1709,"context_line":"            # Allocation-map mode: a hole was never written and reads as"},{"line_number":1710,"context_line":"            # zeros, so omit it rather than reporting exists\u003dFalse.  In"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa50896_fdac531f","line":1707,"range":{"start_line":1707,"start_character":71,"end_line":1707,"end_character":73},"updated":"2026-08-31 16:12:21.000000000","message":"Cinder code almost always splits parameters onto multiple lines rather than using escaped newlines for this scenario.","commit_id":"4a732a3a94addcec3f90e69a9e4810b5339e721d"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"620c3f3b75cac3d0cf3310e2bb87b1bf6156d60e","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"        incremental \u003d from_snapshot is not None"},{"line_number":1705,"context_line":"        extents: list[dict] \u003d []"},{"line_number":1706,"context_line":""},{"line_number":1707,"context_line":"        def iter_cb(ext_offset: int, ext_length: int, ext_exists: bool) \\"},{"line_number":1708,"context_line":"                -\u003e None:"},{"line_number":1709,"context_line":"            # Allocation-map mode: a hole was never written and reads as"},{"line_number":1710,"context_line":"            # zeros, so omit it rather than reporting exists\u003dFalse.  In"}],"source_content_type":"text/x-python","patch_set":2,"id":"f6d0cafc_06d20c27","line":1707,"range":{"start_line":1707,"start_character":71,"end_line":1707,"end_character":73},"in_reply_to":"baa50896_fdac531f","updated":"2026-09-04 13:50:41.000000000","message":"Done","commit_id":"4a732a3a94addcec3f90e69a9e4810b5339e721d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"233b944cc8036afaa153d73af965d3681d62bc2c","unresolved":true,"context_lines":[{"line_number":1715,"context_line":"            # Merge only on adjacency, so a skipped hole between two"},{"line_number":1716,"context_line":"            # allocated extents still breaks the run."},{"line_number":1717,"context_line":"            if (extents and"},{"line_number":1718,"context_line":"                    extents[-1][\u0027offset\u0027] + extents[-1][\u0027length\u0027]"},{"line_number":1719,"context_line":"                    \u003d\u003d ext_offset):"},{"line_number":1720,"context_line":"                extents[-1][\u0027length\u0027] +\u003d ext_length"},{"line_number":1721,"context_line":"            else:"},{"line_number":1722,"context_line":"                extents.append({\u0027offset\u0027: ext_offset, \u0027length\u0027: ext_length,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9c7b0523_a359f107","line":1719,"range":{"start_line":1718,"start_character":20,"end_line":1719,"end_character":33},"updated":"2026-08-31 16:12:21.000000000","message":"This is very complex to read, can probably be done cleaner","commit_id":"4a732a3a94addcec3f90e69a9e4810b5339e721d"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"620c3f3b75cac3d0cf3310e2bb87b1bf6156d60e","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"            # Merge only on adjacency, so a skipped hole between two"},{"line_number":1716,"context_line":"            # allocated extents still breaks the run."},{"line_number":1717,"context_line":"            if (extents and"},{"line_number":1718,"context_line":"                    extents[-1][\u0027offset\u0027] + extents[-1][\u0027length\u0027]"},{"line_number":1719,"context_line":"                    \u003d\u003d ext_offset):"},{"line_number":1720,"context_line":"                extents[-1][\u0027length\u0027] +\u003d ext_length"},{"line_number":1721,"context_line":"            else:"},{"line_number":1722,"context_line":"                extents.append({\u0027offset\u0027: ext_offset, \u0027length\u0027: ext_length,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5482152e_e409b118","line":1719,"range":{"start_line":1718,"start_character":20,"end_line":1719,"end_character":33},"in_reply_to":"9c7b0523_a359f107","updated":"2026-09-04 13:50:41.000000000","message":"Done","commit_id":"4a732a3a94addcec3f90e69a9e4810b5339e721d"}]}
