)]}'
{"src/erasurecode.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f59a941aab517b68acf6242d1107d2a1f720d994","unresolved":true,"context_lines":[{"line_number":573,"context_line":"    if (num_fragments \u003c k) {"},{"line_number":574,"context_line":"        log_error(\"Not enough fragments to decode, got %d, need %d!\","},{"line_number":575,"context_line":"                  num_fragments, k);"},{"line_number":576,"context_line":"        ret \u003d -EINSUFFFRAGS;"},{"line_number":577,"context_line":"        goto out;"},{"line_number":578,"context_line":"    }"},{"line_number":579,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b9545b47_e6a85a3a","line":576,"updated":"2025-12-04 00:07:45.000000000","message":"Note that we already have a check on having sufficient fragments here when decoding.\n\n(Though maybe we ought to check for sufficient *unique* fragments...)","commit_id":"91ef72c0826ca6ab85bb27f52a94395ea76ba467"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f59a941aab517b68acf6242d1107d2a1f720d994","unresolved":true,"context_lines":[{"line_number":684,"context_line":"                                       data_segments, parity_segments,"},{"line_number":685,"context_line":"                                       missing_idxs, blocksize);"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    if (ret \u003c 0) {"},{"line_number":688,"context_line":"        log_error(\"Encountered error in backend decode function!\");"},{"line_number":689,"context_line":"        goto out;"},{"line_number":690,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"85887c03_192e68df","line":687,"updated":"2025-12-04 00:07:45.000000000","message":"Even if we didn\u0027t check for sufficient fragments, though, we should notice that decoding fails (likely due to a failure during matrix inversion) and error out here -- the sufficient-frags check is just an opportunity to do a cheaper early return.","commit_id":"91ef72c0826ca6ab85bb27f52a94395ea76ba467"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"ec982bf0ab8e1023503c2233801e8efaafd2b880","unresolved":true,"context_lines":[{"line_number":868,"context_line":"        goto destination_available;"},{"line_number":869,"context_line":"    }"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    if (num_fragments \u003c k) {"},{"line_number":872,"context_line":"        // TODO: In general, it is possible to reconstruct one or more fragments"},{"line_number":873,"context_line":"        // when more than m fragments are missing (e.g. flat XOR codes)"},{"line_number":874,"context_line":"        ret \u003d -EINSUFFFRAGS;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"38ff9013_d0934c44","line":871,"updated":"2026-01-11 22:46:51.000000000","message":"ok so `num_missing \u003e m \u003d\u003d num_fragments \u003c k` so this is a valid move, and using the variable available to you, kudos.","commit_id":"f29fb7e0e47826cb9655f719550779ceed9dc583"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"73ef08d5b13bd19fb1492777418b7cd7a61a9829","unresolved":true,"context_lines":[{"line_number":868,"context_line":"        goto destination_available;"},{"line_number":869,"context_line":"    }"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"    if (num_fragments \u003c k) {"},{"line_number":872,"context_line":"        // TODO: In general, it is possible to reconstruct one or more fragments"},{"line_number":873,"context_line":"        // when more than m fragments are missing (e.g. flat XOR codes)"},{"line_number":874,"context_line":"        ret \u003d -EINSUFFFRAGS;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"44300c88_3d7b5962","line":871,"in_reply_to":"38ff9013_d0934c44","updated":"2026-01-12 17:20:36.000000000","message":"It\u0027s not *exactly* equivalent -- `num_fragments` includes duplicates, while `num_missing` accounts for them -- but now that https://review.opendev.org/c/openstack/liberasurecode/+/969331 has merged, it should be safe to let `reconstruct` propagate any failures resulting from duplicates bypassing this check.","commit_id":"f29fb7e0e47826cb9655f719550779ceed9dc583"}]}
