)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"50dd432cf11a0619d1e65b919e8fbb8fac1523fa","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Implement the new function for flat xor codes so they can reconstruct"},{"line_number":14,"context_line":"in more cases."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: https://review.opendev.org/c/openstack/liberasurecode/+/969331"},{"line_number":17,"context_line":"Change-Id: Ifa373e4ef8ef3caedb709c40c2b2bfd6fdf6ff7e"},{"line_number":18,"context_line":"Signed-off-by: Tim Burke \u003ctim.burke@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"b20ce83b_a4540bed","line":16,"updated":"2025-12-07 21:36:53.000000000","message":"Not strictly needed due to how I stacked them up -- which was mainly because of the related test changes between the patches.","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0c676ea5b0c74d6632e00ee5ab3242511e90444d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Implement the new function for flat xor codes so they can reconstruct"},{"line_number":14,"context_line":"in more cases."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: https://review.opendev.org/c/openstack/liberasurecode/+/969331"},{"line_number":17,"context_line":"Change-Id: Ifa373e4ef8ef3caedb709c40c2b2bfd6fdf6ff7e"},{"line_number":18,"context_line":"Signed-off-by: Tim Burke \u003ctim.burke@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5d1f9266_f2c69dc7","line":16,"in_reply_to":"b20ce83b_a4540bed","updated":"2026-01-12 17:56:19.000000000","message":"Done","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"}],"src/backends/xor/flat_xor_hd.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"50dd432cf11a0619d1e65b919e8fbb8fac1523fa","unresolved":true,"context_lines":[{"line_number":116,"context_line":"            return -EINSUFFFRAGS;"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if (xor_desc-\u003em \u003d\u003d 5) {"},{"line_number":119,"context_line":"            if ((xor_desc-\u003ek \u003d\u003d 8 || xor_desc-\u003ek \u003d\u003d 9) \u0026\u0026 num_available \u003c 3)"},{"line_number":120,"context_line":"                return -EINSUFFFRAGS;"},{"line_number":121,"context_line":"            if (xor_desc-\u003ek \u003d\u003d 10 \u0026\u0026 num_available \u003c 4)"},{"line_number":122,"context_line":"                return -EINSUFFFRAGS;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1c4e4b6b_797b8514","line":119,"updated":"2025-12-07 21:36:53.000000000","message":"There\u0027s probably some closed-form thing we could do rather than all this special-casing, but it wasn\u0027t immediately apparent to me.","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"058ae7dd37de28f876f9d9fe7188617807a1ca97","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            return -EINSUFFFRAGS;"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if (xor_desc-\u003em \u003d\u003d 5) {"},{"line_number":119,"context_line":"            if ((xor_desc-\u003ek \u003d\u003d 8 || xor_desc-\u003ek \u003d\u003d 9) \u0026\u0026 num_available \u003c 3)"},{"line_number":120,"context_line":"                return -EINSUFFFRAGS;"},{"line_number":121,"context_line":"            if (xor_desc-\u003ek \u003d\u003d 10 \u0026\u0026 num_available \u003c 4)"},{"line_number":122,"context_line":"                return -EINSUFFFRAGS;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"628f5671_a913c45f","line":119,"in_reply_to":"1c4e4b6b_797b8514","updated":"2026-01-15 00:22:28.000000000","message":"meh, if there is that can be a future refactor/clean up.","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"058ae7dd37de28f876f9d9fe7188617807a1ca97","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    int num_available \u003d xor_desc-\u003ek + xor_desc-\u003em;"},{"line_number":110,"context_line":"    for (int i \u003d 0; i \u003c EC_MAX_FRAGMENTS; i++)"},{"line_number":111,"context_line":"        if ((1LLU \u003c\u003c i) \u0026 missing_bm)"},{"line_number":112,"context_line":"            num_available--;"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    if (xor_desc-\u003ehd \u003d\u003d 3) {"},{"line_number":115,"context_line":"        if (num_available \u003c 2)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"c19730d0_a75a841e","line":112,"updated":"2026-01-15 00:22:28.000000000","message":"This is some cool bitmap wizardry, love it!","commit_id":"a87ddc707189795666631005898daf1f43df3967"}],"src/erasurecode.c":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"f14cfbef845958341c520fe6e8fd27a92857c146","unresolved":true,"context_lines":[{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    if (instance-\u003ecommon.ops-\u003echeck_reconstruct_fragments \u003d\u003d NULL) {"},{"line_number":872,"context_line":"        if (num_fragments \u003c k) {"},{"line_number":873,"context_line":"            // TODO: In general, it is possible to reconstruct one or more fragments"},{"line_number":874,"context_line":"            // when more than m fragments are missing (e.g. flat XOR codes)"},{"line_number":875,"context_line":"            ret \u003d -EINSUFFFRAGS;"},{"line_number":876,"context_line":"            goto out;"},{"line_number":877,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"817ff75c_54393fa8","line":874,"range":{"start_line":873,"start_character":9,"end_line":874,"end_character":75},"updated":"2026-01-11 22:55:09.000000000","message":"no sure this comment is required anymore because you\u0027ve added the check_reconstruct_fragmants methos to the flat XOR codes.","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0c676ea5b0c74d6632e00ee5ab3242511e90444d","unresolved":false,"context_lines":[{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    if (instance-\u003ecommon.ops-\u003echeck_reconstruct_fragments \u003d\u003d NULL) {"},{"line_number":872,"context_line":"        if (num_fragments \u003c k) {"},{"line_number":873,"context_line":"            // TODO: In general, it is possible to reconstruct one or more fragments"},{"line_number":874,"context_line":"            // when more than m fragments are missing (e.g. flat XOR codes)"},{"line_number":875,"context_line":"            ret \u003d -EINSUFFFRAGS;"},{"line_number":876,"context_line":"            goto out;"},{"line_number":877,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"ce67f242_e5047a09","line":874,"range":{"start_line":873,"start_character":9,"end_line":874,"end_character":75},"in_reply_to":"817ff75c_54393fa8","updated":"2026-01-12 17:56:19.000000000","message":"Good call -- I\u0027d meant to remove it.","commit_id":"92289d6799bc6423bec3eb63ae8a580ba14c98fc"}]}
