)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8446d5c28527f906b68ab3bdce4f72c15a7e258d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f6bbd02a_f7892182","updated":"2026-06-17 23:01:52.000000000","message":"Mainly looking at checksum and schema changes so far, but wanted to post some questions so far.","commit_id":"4a1b6c4dab7d6c288fb59a05129353a0d01e2355"}],"swift/common/middleware/s3api/controllers/multi_upload.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e89ffae954e5275be6b65dc44d252490f44e3150","unresolved":false,"context_lines":[{"line_number":760,"context_line":"            last_part \u003d os.path.basename(o[\u0027name\u0027])"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        part_checksums \u003d {}"},{"line_number":763,"context_line":"        # For checksum-aware MPUs (those that have checksum fields in the manifest),"},{"line_number":764,"context_line":"        # We will perform more work on them to gather per part checksum metadata"},{"line_number":765,"context_line":"        if marker_checksum_elem_name:"},{"line_number":766,"context_line":"            for obj in objList:"}],"source_content_type":"text/x-python","patch_set":4,"id":"2d165149_830a26b9","line":763,"updated":"2026-06-15 23:30:07.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"60954b871ad9a5512db943421bae279e3a9976ec"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"e89ffae954e5275be6b65dc44d252490f44e3150","unresolved":false,"context_lines":[{"line_number":761,"context_line":""},{"line_number":762,"context_line":"        part_checksums \u003d {}"},{"line_number":763,"context_line":"        # For checksum-aware MPUs (those that have checksum fields in the manifest),"},{"line_number":764,"context_line":"        # We will perform more work on them to gather per part checksum metadata"},{"line_number":765,"context_line":"        if marker_checksum_elem_name:"},{"line_number":766,"context_line":"            for obj in objList:"},{"line_number":767,"context_line":"                # Since checksum data is stored as sysmeta, we need to HEAD"}],"source_content_type":"text/x-python","patch_set":4,"id":"b3f4b6de_95d9659e","line":764,"updated":"2026-06-15 23:30:07.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"60954b871ad9a5512db943421bae279e3a9976ec"}],"swift/common/middleware/s3api/schema/complete_multipart_upload.rng":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8446d5c28527f906b68ab3bdce4f72c15a7e258d","unresolved":true,"context_lines":[{"line_number":42,"context_line":"              \u003c/element\u003e"},{"line_number":43,"context_line":"            \u003c/optional\u003e"},{"line_number":44,"context_line":"            \u003coptional\u003e"},{"line_number":45,"context_line":"              \u003celement name\u003d\"ChecksumSHA512\"\u003e"},{"line_number":46,"context_line":"                \u003cdata type\u003d\"string\"/\u003e"},{"line_number":47,"context_line":"              \u003c/element\u003e"},{"line_number":48,"context_line":"            \u003c/optional\u003e"}],"source_content_type":"application/xml","patch_set":6,"id":"44265704_343e3eaf","line":45,"range":{"start_line":45,"start_character":29,"end_line":45,"end_character":43},"updated":"2026-06-17 23:01:52.000000000","message":"These newly-supported checksum types were quietly added in https://review.opendev.org/c/openstack/swift/+/991516 yeah? Would it maybe be better to add support all in one commit that touches both these schemas and `s3request.py`?","commit_id":"4a1b6c4dab7d6c288fb59a05129353a0d01e2355"}],"swift/common/utils/checksum.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8446d5c28527f906b68ab3bdce4f72c15a7e258d","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    return [_gf2_matrix_times(matrix, row) for row in matrix]"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"def _crc_shift(crc, length, polynomial, width):"},{"line_number":192,"context_line":"    \"\"\""},{"line_number":193,"context_line":"    Shift a CRC across ``length`` zero bytes for CRC combine math."},{"line_number":194,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"8e8c935b_2c8ac2f4","line":191,"updated":"2026-06-17 23:01:52.000000000","message":"Are we sure we want to implement this in Python? Might be worth seeing whether `anycrc` is available, and using their `combine` that does it in C.","commit_id":"4a1b6c4dab7d6c288fb59a05129353a0d01e2355"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8446d5c28527f906b68ab3bdce4f72c15a7e258d","unresolved":true,"context_lines":[{"line_number":216,"context_line":"        odd \u003d _gf2_matrix_square(even)"},{"line_number":217,"context_line":"        if length \u0026 1:"},{"line_number":218,"context_line":"            crc \u003d _gf2_matrix_times(odd, crc)"},{"line_number":219,"context_line":"        length \u003e\u003e\u003d 1"},{"line_number":220,"context_line":"    return crc \u0026 mask"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"4cfa3442_5fea8fad","line":219,"updated":"2026-06-17 23:01:52.000000000","message":"Am I right to read that this even/odd business is just some loop unrolling? Is that mainly for performance, or is there something more going on here?\n\nFWIW, tests still pass with something like\n```\ndiff --git a/swift/common/utils/checksum.py b/swift/common/utils/checksum.py\nindex f1dc511cd..d22c2aed8 100644\n--- a/swift/common/utils/checksum.py\n+++ b/swift/common/utils/checksum.py\n@@ -204,19 +204,12 @@ def _crc_shift(crc, length, polynomial, width):\n         row \u003c\u003c\u003d 1\n\n     even \u003d _gf2_matrix_square(odd)\n-    odd \u003d _gf2_matrix_square(even)\n+    even \u003d _gf2_matrix_square(even)\n     while length:\n-        even \u003d _gf2_matrix_square(odd)\n+        even \u003d _gf2_matrix_square(even)\n         if length \u0026 1:\n             crc \u003d _gf2_matrix_times(even, crc)\n         length \u003e\u003e\u003d 1\n-        if not length:\n-            break\n-\n-        odd \u003d _gf2_matrix_square(even)\n-        if length \u0026 1:\n-            crc \u003d _gf2_matrix_times(odd, crc)\n-        length \u003e\u003e\u003d 1\n     return crc \u0026 mask\n\n\n```\napplied.","commit_id":"4a1b6c4dab7d6c288fb59a05129353a0d01e2355"}]}
