)]}'
{"include/erasurecode/erasurecode.h":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4885c0a2115fce64a22ee5d43171e1e390c19d4b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    int m;                  /* number of parity fragments */"},{"line_number":75,"context_line":"    int w;                  /* word size, in bits (optional) */"},{"line_number":76,"context_line":"    int hd;                 /* hamming distance (\u003dm for Reed-Solomon) */"},{"line_number":77,"context_line":"    int p;                  /* libphazr backend internal metadata */"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    union {"},{"line_number":80,"context_line":"        struct {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5a3905b3_636d78cb","line":77,"updated":"2017-01-23 23:26:20.000000000","message":"Does this mean deployers/consumers will need to recompile pyeclib against latest liberasurecode even if they\u0027re not planning to use libphazr? (We would probably recommend that anyway; I just want to better understand the process.)\n\nJudging by https://github.com/openstack/pyeclib/blob/master/src/c/pyeclib_c/pyeclib_c.h#L36 I\u0027m guessing yes?\n\nShould we start eating into the \"reserved for future expansion\" space? Otherwise, we\u0027ve changed the offset to the checksum type... FWIW, I see that we\u0027ve done that sort of thing before in https://github.com/openstack/liberasurecode/commit/dbbc02d and https://github.com/openstack/liberasurecode/commit/e30f788 (though I\u0027m not sure we did the right thing for .hd in that second one...)\n\nOr maybe we could/should (ab)use the .hd arg?","commit_id":"7c338bd4c9524f449c1af9d4f55b08ad96e05c09"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"63fb25cb015c6c351ae5ea4e5c604f17c9e80c80","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    EC_BACKEND_SHSS                   \u003d 5,"},{"line_number":50,"context_line":"    EC_BACKEND_LIBERASURECODE_RS_VAND \u003d 6,"},{"line_number":51,"context_line":"    EC_BACKEND_ISA_L_RS_CAUCHY        \u003d 7,"},{"line_number":52,"context_line":"    EC_BACKEND_LIBPHAZR               \u003d 8,"},{"line_number":53,"context_line":"    EC_BACKENDS_MAX,"},{"line_number":54,"context_line":"} ec_backend_id_t;"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"da36d5c6_c7909198","line":52,"updated":"2017-02-20 20:28:01.000000000","message":"Ok, it\u0027s a new backend so that it\u0027s great to add your contact inf o to the README file, isn\u0027t it?","commit_id":"ba4e66a6e4008c1ba1cdce971f22f4d4b4c51fcc"}],"include/erasurecode/erasurecode_backend.h":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    bool (*ISCOMPATIBLEWITH)(uint32_t version);"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    size_t (*GETMETADATASIZE)(void *desc, int blocksize);"},{"line_number":98,"context_line":"    size_t (*GETENCODEOFFSET)(int metadata_size);"},{"line_number":99,"context_line":"};"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"/* \u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d backend struct definitions \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d\u003d~\u003d\u003d */"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_a4fdc46f","line":98,"updated":"2017-02-24 08:10:26.000000000","message":"I was kinda expecting this to take a *desc arg -- if some future EC backend *also* needs a get_encode_offset, how confident are we that metadata_size alone will be enough? Maybe it doesn\u0027t really matter; we\u0027d just go update all the other shims we have in-tree...","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ccb327e91390f1fee7ecd4a79c6067fde0397883","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    bool (*ISCOMPATIBLEWITH)(uint32_t version);"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    size_t (*GETMETADATASIZE)(void *desc, int blocksize);"},{"line_number":98,"context_line":"    size_t (*GETENCODEOFFSET)(int metadata_size);"},{"line_number":99,"context_line":"};"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"/* \u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d backend struct definitions \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d\u003d~\u003d\u003d */"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_da024372","line":98,"in_reply_to":"da36d5c6_7b37d4fe","updated":"2017-02-27 19:57:10.000000000","message":"Up to you. I was thinking about API consistency, but I also don\u0027t have anything in mind to use it -- as you say, it\u0027s hard to guess. Just wanted to point it out, but I certainly wouldn\u0027t block it either way.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    bool (*ISCOMPATIBLEWITH)(uint32_t version);"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    size_t (*GETMETADATASIZE)(void *desc, int blocksize);"},{"line_number":98,"context_line":"    size_t (*GETENCODEOFFSET)(int metadata_size);"},{"line_number":99,"context_line":"};"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"/* \u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d backend struct definitions \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d\u003d~\u003d\u003d */"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_7b37d4fe","line":98,"in_reply_to":"da36d5c6_a4fdc46f","updated":"2017-02-24 22:14:14.000000000","message":"Yeah, but it would be hard to guess for other possible scenarios. Maybe we can still add it to be consistent with other function signatures?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"}],"include/erasurecode/erasurecode_preprocessing.h":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4885c0a2115fce64a22ee5d43171e1e390c19d4b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"int libphazr_fragments_to_string("},{"line_number":58,"context_line":"        int k, int m, int w, int aligned_padding,"},{"line_number":59,"context_line":"        char **fragments, int num_fragments,"},{"line_number":60,"context_line":"        char **orig_payload, uint64_t *payload_len);"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5a3905b3_e35408cb","line":60,"updated":"2017-01-23 23:26:20.000000000","message":"This makes me wonder if we should have been passing the ec_backend_t instance to all of these from the get-go :-/\n\nOr maybe I\u0027m mistaken, and there\u0027s a bigger difference between libphazr_fragments_to_string and fragments_to_string than I imagine?","commit_id":"7c338bd4c9524f449c1af9d4f55b08ad96e05c09"}],"src/backends/phazrio/libphazr.c":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"},{"line_number":116,"context_line":"        decoded[i] \u003d (char*)data[i];"},{"line_number":117,"context_line":"    }"},{"line_number":118,"context_line":"    "},{"line_number":119,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003em; i++) {"},{"line_number":120,"context_line":"        decoded[i + xdesc-\u003ek] \u003d (char*)parity[i];"},{"line_number":121,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_c80e578b","line":118,"updated":"2017-01-31 08:16:30.000000000","message":"please avoid empty spaces.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"},{"line_number":116,"context_line":"        decoded[i] \u003d (char*)data[i];"},{"line_number":117,"context_line":"    }"},{"line_number":118,"context_line":"    "},{"line_number":119,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003em; i++) {"},{"line_number":120,"context_line":"        decoded[i + xdesc-\u003ek] \u003d (char*)parity[i];"},{"line_number":121,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_3edc5545","line":118,"in_reply_to":"3a461143_c80e578b","updated":"2017-01-31 19:12:28.000000000","message":"Yes, we\u0027ll fix it.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"}"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"/**"},{"line_number":172,"context_line":" * Return the element-size, which is the number of bits stored "},{"line_number":173,"context_line":" * on a given device, per codeword."},{"line_number":174,"context_line":" */"},{"line_number":175,"context_line":"static int pio_element_size(void *desc)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_887fefde","line":172,"range":{"start_line":172,"start_character":62,"end_line":172,"end_character":63},"updated":"2017-01-31 08:16:30.000000000","message":"Avoid the space at the end of a line also good.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":169,"context_line":"}"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"/**"},{"line_number":172,"context_line":" * Return the element-size, which is the number of bits stored "},{"line_number":173,"context_line":" * on a given device, per codeword."},{"line_number":174,"context_line":" */"},{"line_number":175,"context_line":"static int pio_element_size(void *desc)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_7ed17d22","line":172,"range":{"start_line":172,"start_character":62,"end_line":172,"end_character":63},"in_reply_to":"3a461143_887fefde","updated":"2017-01-31 19:12:28.000000000","message":"Will be fixed,","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":175,"context_line":"static int pio_element_size(void *desc)"},{"line_number":176,"context_line":"{"},{"line_number":177,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *)desc;"},{"line_number":178,"context_line":"    "},{"line_number":179,"context_line":"    return xdesc-\u003ew;"},{"line_number":180,"context_line":"}"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_e870730d","line":178,"updated":"2017-01-31 08:16:30.000000000","message":"ditto","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":175,"context_line":"static int pio_element_size(void *desc)"},{"line_number":176,"context_line":"{"},{"line_number":177,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *)desc;"},{"line_number":178,"context_line":"    "},{"line_number":179,"context_line":"    return xdesc-\u003ew;"},{"line_number":180,"context_line":"}"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_bef045ca","line":178,"in_reply_to":"3a461143_e870730d","updated":"2017-01-31 19:12:28.000000000","message":"Will be fixed.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    struct libphazr_descriptor *desc \u003d NULL;"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    /* allocate and fill in libphazr_descriptor */"},{"line_number":187,"context_line":"    desc \u003d (struct libphazr_descriptor *) malloc(sizeof(struct libphazr_descriptor));"},{"line_number":188,"context_line":"    if (NULL \u003d\u003d desc) {"},{"line_number":189,"context_line":"        return NULL;"},{"line_number":190,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_48534739","line":187,"range":{"start_line":187,"start_character":41,"end_line":187,"end_character":42},"updated":"2017-01-31 08:16:30.000000000","message":"not a strongly opinion but sometimes it\u0027s better to keep coding mehtod with others. It looks like other code dosn\u0027t have a space before casting prefix.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    struct libphazr_descriptor *desc \u003d NULL;"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    /* allocate and fill in libphazr_descriptor */"},{"line_number":187,"context_line":"    desc \u003d (struct libphazr_descriptor *) malloc(sizeof(struct libphazr_descriptor));"},{"line_number":188,"context_line":"    if (NULL \u003d\u003d desc) {"},{"line_number":189,"context_line":"        return NULL;"},{"line_number":190,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_0161fca8","line":187,"range":{"start_line":187,"start_character":41,"end_line":187,"end_character":42},"in_reply_to":"3a461143_48534739","updated":"2017-01-31 19:12:28.000000000","message":"Will remove the extra space.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    func_handle.vptr \u003d dlsym(backend_sohandle, \"create_precoding_matrix\");"},{"line_number":225,"context_line":"    desc-\u003ecreate_precoding_matrix \u003d func_handle.create_precoding_matrix_ptr;"},{"line_number":226,"context_line":"    if (NULL \u003d\u003d desc-\u003ecreate_precoding_matrix) {"},{"line_number":227,"context_line":"        goto error; "},{"line_number":228,"context_line":"    }"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    func_handle.vptr \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_e828739c","line":227,"updated":"2017-01-31 08:16:30.000000000","message":"ditto and belows.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    func_handle.vptr \u003d dlsym(backend_sohandle, \"create_precoding_matrix\");"},{"line_number":225,"context_line":"    desc-\u003ecreate_precoding_matrix \u003d func_handle.create_precoding_matrix_ptr;"},{"line_number":226,"context_line":"    if (NULL \u003d\u003d desc-\u003ecreate_precoding_matrix) {"},{"line_number":227,"context_line":"        goto error; "},{"line_number":228,"context_line":"    }"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    func_handle.vptr \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_1e8eb92d","line":227,"in_reply_to":"3a461143_e828739c","updated":"2017-01-31 19:12:28.000000000","message":"Will be fixed.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    xdesc-\u003efree_matrix(xdesc-\u003eprecoding_matrix);"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    xdesc-\u003efree_matrix(xdesc-\u003einverse_precoding_matrix);"},{"line_number":301,"context_line":"    "},{"line_number":302,"context_line":"    free(xdesc);"},{"line_number":303,"context_line":"    "}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_ee6b1bb5","line":300,"updated":"2017-01-31 08:16:30.000000000","message":"It\u0027s just my bent though, it looks like we could free the pointers directly because each matrix is just a char*?\n\ni.e. sort of\n\n free(xdesc-\u003ematrix);\n free(xdesc-\u003eprecoding_matrix);\n free(xdesc-\u003einverse_precodign_matrix);\n\ncould be easy to understand for any developers. Otherwise, developers (including me) would doubt of memory leak if it happens.\n\nAnd the perspective for memory control, if we should free the allocated memory here, it\u0027s better from my experience to allocate the memory *in this module*. Perhaps, it could affect the api on your backend because it looks like some function (e.g. create_kmux_matrix) allocates the memory and its pointer as return value, though.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"63fb25cb015c6c351ae5ea4e5c604f17c9e80c80","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    .soversion                  \u003d LIBPHAZR_LIB_VER_STR,"},{"line_number":335,"context_line":"    .ops                        \u003d \u0026libphazr_op_stubs,"},{"line_number":336,"context_line":"    .set_encode_data_offset     \u003d 1,"},{"line_number":337,"context_line":"    .set_decode_data_offset     \u003d 0,"},{"line_number":338,"context_line":"    .ec_backend_version         \u003d _VERSION(LIBPHAZR_LIB_MAJOR, LIBPHAZR_LIB_MINOR,"},{"line_number":339,"context_line":"                                           LIBPHAZR_LIB_REV),"},{"line_number":340,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"da36d5c6_8795b941","line":337,"updated":"2017-02-20 20:28:01.000000000","message":"the decode_data_offset looks always 0 even if your phazrio so we don\u0027t have to make it dynamic in this time, right?\n\nThat could be a kind of YAGNI.","commit_id":"ba4e66a6e4008c1ba1cdce971f22f4d4b4c51fcc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"{"},{"line_number":96,"context_line":"    int i;"},{"line_number":97,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":98,"context_line":"    char **encoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_84c280e7","line":98,"range":{"start_line":98,"start_character":21,"end_line":98,"end_character":27},"updated":"2017-02-24 08:10:26.000000000","message":"How many total fragments does libphazr support? What\u0027s the chance that this could blow our stack and lead to undefined behavior?\n\nWould it be better to just use malloc and call free before returning?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"{"},{"line_number":96,"context_line":"    int i;"},{"line_number":97,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":98,"context_line":"    char **encoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_34847409","line":98,"range":{"start_line":98,"start_character":21,"end_line":98,"end_character":27},"in_reply_to":"da36d5c6_4e088cda","updated":"2017-02-27 04:16:45.000000000","message":"I think that\u0027s made by a my co-worker and the reason it still exists is because of my lazy review for that. I don\u0027t think the non-semantic codes requires alloca instead of malloc/free and it looks to work.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"{"},{"line_number":96,"context_line":"    int i;"},{"line_number":97,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":98,"context_line":"    char **encoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_4e088cda","line":98,"range":{"start_line":98,"start_character":21,"end_line":98,"end_character":27},"in_reply_to":"da36d5c6_84c280e7","updated":"2017-02-24 22:14:14.000000000","message":"Total fragments supported right now is less than 32, but there is no theoretical limit. We will change it to use malloc and free.\nWe looked at Kota\u0027s shss implementation as reference for this part, since we both are non-systematic codes. Should we change that too?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"},{"line_number":102,"context_line":"        encoded[i] \u003d (char*)data[i];"},{"line_number":103,"context_line":"    }"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003em; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_a725c65c","line":102,"range":{"start_line":102,"start_character":21,"end_line":102,"end_character":28},"updated":"2017-02-24 08:10:26.000000000","message":"nit: is the cast necessary?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"},{"line_number":102,"context_line":"        encoded[i] \u003d (char*)data[i];"},{"line_number":103,"context_line":"    }"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003em; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_d4915848","line":102,"range":{"start_line":102,"start_character":21,"end_line":102,"end_character":28},"in_reply_to":"da36d5c6_0eadb487","updated":"2017-02-27 04:16:45.000000000","message":"my laziness too.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"},{"line_number":102,"context_line":"        encoded[i] \u003d (char*)data[i];"},{"line_number":103,"context_line":"    }"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003em; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_0eadb487","line":102,"range":{"start_line":102,"start_character":21,"end_line":102,"end_character":28},"in_reply_to":"da36d5c6_a725c65c","updated":"2017-02-24 22:14:14.000000000","message":"No... also from shss...","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"{"},{"line_number":116,"context_line":"    int i;"},{"line_number":117,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":118,"context_line":"    char **decoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":119,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_e4617c06","line":118,"range":{"start_line":118,"start_character":21,"end_line":118,"end_character":27},"updated":"2017-02-24 08:10:26.000000000","message":"Similar concern here.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"{"},{"line_number":116,"context_line":"    int i;"},{"line_number":117,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":118,"context_line":"    char **decoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":119,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_14985069","line":118,"range":{"start_line":118,"start_character":21,"end_line":118,"end_character":27},"in_reply_to":"da36d5c6_e4617c06","updated":"2017-02-27 04:16:45.000000000","message":"ditto","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"{"},{"line_number":136,"context_line":"    int i;"},{"line_number":137,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":138,"context_line":"    char **encoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":139,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_47fecaae","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":27},"updated":"2017-02-24 08:10:26.000000000","message":"Ditto.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"{"},{"line_number":136,"context_line":"    int i;"},{"line_number":137,"context_line":"    struct libphazr_descriptor *xdesc \u003d (struct libphazr_descriptor *) desc;"},{"line_number":138,"context_line":"    char **encoded \u003d alloca(sizeof(char*) * (xdesc-\u003ek + xdesc-\u003em));"},{"line_number":139,"context_line":"    int padding_size \u003d get_padded_blocksize(xdesc-\u003ew, xdesc-\u003ehd, blocksize) - blocksize;"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    for (i \u003d 0; i \u003c xdesc-\u003ek; i++) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_349b9467","line":138,"range":{"start_line":138,"start_character":21,"end_line":138,"end_character":27},"in_reply_to":"da36d5c6_47fecaae","updated":"2017-02-27 04:16:45.000000000","message":"ditto","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    int ret \u003d -1;"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    for (i \u003d 0; i \u003c (xdesc-\u003ek + xdesc-\u003em); i++) {"},{"line_number":164,"context_line":"        if (!(missing_bm \u0026 (1 \u003c\u003c i))) {"},{"line_number":165,"context_line":"            fragments_needed[j] \u003d i;"},{"line_number":166,"context_line":"            j++;"},{"line_number":167,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_c7b63af8","line":164,"range":{"start_line":164,"start_character":28,"end_line":164,"end_character":29},"updated":"2017-02-24 08:10:26.000000000","message":"Should that be\n\n 1LLU\n\nor maybe\n\n UINT64_C(1)\n\n? I suppose other backends have similar trouble...","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"0137d235934f2cf574c6e2453eb6ac8e6864182c","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    int ret \u003d -1;"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    for (i \u003d 0; i \u003c (xdesc-\u003ek + xdesc-\u003em); i++) {"},{"line_number":164,"context_line":"        if (!(missing_bm \u0026 (1 \u003c\u003c i))) {"},{"line_number":165,"context_line":"            fragments_needed[j] \u003d i;"},{"line_number":166,"context_line":"            j++;"},{"line_number":167,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_97542722","line":164,"range":{"start_line":164,"start_character":28,"end_line":164,"end_character":29},"in_reply_to":"da36d5c6_14af707d","updated":"2017-02-27 19:12:19.000000000","message":"ok","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    int ret \u003d -1;"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    for (i \u003d 0; i \u003c (xdesc-\u003ek + xdesc-\u003em); i++) {"},{"line_number":164,"context_line":"        if (!(missing_bm \u0026 (1 \u003c\u003c i))) {"},{"line_number":165,"context_line":"            fragments_needed[j] \u003d i;"},{"line_number":166,"context_line":"            j++;"},{"line_number":167,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_14af707d","line":164,"range":{"start_line":164,"start_character":28,"end_line":164,"end_character":29},"in_reply_to":"da36d5c6_2e8ef8cf","updated":"2017-02-27 04:16:45.000000000","message":"Good idea Jim. Something like get_min_fragments_k?\n\nBut I think it\u0027s ok that happens at another patch.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    int ret \u003d -1;"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    for (i \u003d 0; i \u003c (xdesc-\u003ek + xdesc-\u003em); i++) {"},{"line_number":164,"context_line":"        if (!(missing_bm \u0026 (1 \u003c\u003c i))) {"},{"line_number":165,"context_line":"            fragments_needed[j] \u003d i;"},{"line_number":166,"context_line":"            j++;"},{"line_number":167,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_2e8ef8cf","line":164,"range":{"start_line":164,"start_character":28,"end_line":164,"end_character":29},"in_reply_to":"da36d5c6_c7b63af8","updated":"2017-02-24 22:14:14.000000000","message":"Since we didn\u0027t need any of libphazr functions, it is a exact copy from other implementations. Maybe consider sharing this function across backends like get_metadata_size_zero?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        goto error;"},{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_e7cdfe66","line":271,"updated":"2017-02-24 08:10:26.000000000","message":"Won\u0027t this always be true?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"0137d235934f2cf574c6e2453eb6ac8e6864182c","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        goto error;"},{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_57ac6f35","line":271,"in_reply_to":"da36d5c6_14e690e7","updated":"2017-02-27 19:12:19.000000000","message":"We are already using it in our dev branch, so we will keep it here.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ccb327e91390f1fee7ecd4a79c6067fde0397883","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        goto error;"},{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_5aae53e8","line":271,"in_reply_to":"da36d5c6_57ac6f35","updated":"2017-02-27 19:57:10.000000000","message":"Yeah, that\u0027s fine.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        goto error;"},{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_14e690e7","line":271,"in_reply_to":"da36d5c6_ce61dc06","updated":"2017-02-27 04:16:45.000000000","message":"YAGNI or do preparing now?\n\nEither is fine to me though.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        goto error;"},{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_ce61dc06","line":271,"in_reply_to":"da36d5c6_e7cdfe66","updated":"2017-02-24 22:14:14.000000000","message":"We will support passing customized precoding matrix and encoding matrix from external args, so it is possible this is not null in the future.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    if (NULL \u003d\u003d desc-\u003einverse_precoding_matrix) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_e7a6deac","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":62},"updated":"2017-02-24 08:10:26.000000000","message":"How does this fail?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"0137d235934f2cf574c6e2453eb6ac8e6864182c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    if (NULL \u003d\u003d desc-\u003einverse_precoding_matrix) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_b7612b14","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":62},"in_reply_to":"da36d5c6_14fdb06d","updated":"2017-02-27 19:12:19.000000000","message":"Got it.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"5be4c955c3beb00ca027dd4684e1caaa8d6c1b0b","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    if (NULL \u003d\u003d desc-\u003einverse_precoding_matrix) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_14fdb06d","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":62},"in_reply_to":"da36d5c6_7105350f","updated":"2017-02-27 04:16:45.000000000","message":"That sounds like, we must check if desc-\u003eprecoding_matrix !\u003d NULL after this, and if it\u0027s NULL, we should go to error handling (free some memory that already has been allocated), right?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    }"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    if (NULL \u003d\u003d desc-\u003eprecoding_matrix) {"},{"line_number":272,"context_line":"        desc-\u003eprecoding_matrix \u003d desc-\u003ecreate_precoding_matrix(desc-\u003ek);"},{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    if (NULL \u003d\u003d desc-\u003einverse_precoding_matrix) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_7105350f","line":272,"range":{"start_line":272,"start_character":33,"end_line":272,"end_character":62},"in_reply_to":"da36d5c6_e7a6deac","updated":"2017-02-24 22:14:14.000000000","message":"The function free internally and returns NULL when function fails. The same goes to create_inverse_precoding_matrix and create_kmux_matrix.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    }"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    if (NULL \u003d\u003d desc-\u003einverse_precoding_matrix) {"},{"line_number":276,"context_line":"        desc-\u003einverse_precoding_matrix \u003d desc-\u003ecreate_inverse_precoding_matrix(desc-\u003ek);"},{"line_number":277,"context_line":"    }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    if (NULL \u003d\u003d desc-\u003ematrix) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_87bc42bc","line":276,"range":{"start_line":276,"start_character":41,"end_line":276,"end_character":78},"updated":"2017-02-24 08:10:26.000000000","message":"...and this? And when it fails, shouldn\u0027t we free the precoding_matrix?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    }"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    if (NULL \u003d\u003d desc-\u003ematrix) {"},{"line_number":280,"context_line":"        desc-\u003ematrix \u003d desc-\u003ecreate_kmux_matrix(desc-\u003ek, desc-\u003em, desc-\u003ew);"},{"line_number":281,"context_line":"    }"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    return (void *) desc;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_a7af867b","line":280,"range":{"start_line":280,"start_character":23,"end_line":280,"end_character":47},"updated":"2017-02-24 08:10:26.000000000","message":"Similar concern...","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"56e77674bf8b132ef547f8f341414cd61bec62fd","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    return (void *) desc;"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"error:"},{"line_number":325,"context_line":"    free(desc-\u003ematrix);"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    free(desc-\u003eprecoding_matrix);"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"    free(desc-\u003einverse_precoding_matrix);"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    free(desc);"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    return NULL;"},{"line_number":334,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"ba2be162_15bf41d1","line":331,"range":{"start_line":325,"start_character":0,"end_line":331,"end_character":15},"updated":"2017-03-01 02:06:10.000000000","message":"Probably, Tim points out around here, that could call \"free\" which may be not yet assigned any memory allocation but it seems this is safe because we had 0 fills for the libphazr_descriptor via memset at L228 and it performs as init for the descriptor if i understand the c behavior correctly.\n\nSnippet of my confirmation is,\nhttps://gist.github.com/bloodeagle40234/8046e88c11906185c558524d2664dd0e\n\nI compiled that code, and ran with `valgrind --leak-check\u003dfull`. Then, it didn\u0027t report any leak and possible problems.","commit_id":"06e50ea86b6de729fa5dbc23ef41af87b19e636a"}],"src/backends/xor/flat_xor_hd.c":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"63fb25cb015c6c351ae5ea4e5c604f17c9e80c80","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    return version \u003d\u003d backend_flat_xor_hd.ec_backend_version;"},{"line_number":170,"context_line":"}"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"static size_t flat_xor_get_backend_metadata_size(void *desc, int blocksize) {"},{"line_number":173,"context_line":"    return 0;"},{"line_number":174,"context_line":"}"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"struct ec_backend_op_stubs flat_xor_hd_op_stubs \u003d {"},{"line_number":177,"context_line":"    .INIT                       \u003d flat_xor_hd_init,"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"da36d5c6_39350dda","line":174,"range":{"start_line":172,"start_character":0,"end_line":174,"end_character":1},"updated":"2017-02-20 20:28:01.000000000","message":"I don\u0027t think all backends should define such a redundant function , please make sure my follow-up [1] if we can reduce such definitions across the backends.\n\nIf you like it, i wonder if you could squash up that into here to be less code change from the parent :)\n\n1: https://review.openstack.org/436174","commit_id":"ba4e66a6e4008c1ba1cdce971f22f4d4b4c51fcc"}],"src/erasurecode.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4885c0a2115fce64a22ee5d43171e1e390c19d4b","unresolved":false,"context_lines":[{"line_number":600,"context_line":"    }"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    if (instance-\u003ecommon.id !\u003d EC_BACKEND_SHSS \u0026\u0026 instance-\u003ecommon.id !\u003d EC_BACKEND_LIBPHAZR) {"},{"line_number":603,"context_line":"        /* shss (ntt_backend) ＆ libphazr backend must force to decode */"},{"line_number":604,"context_line":"        // TODO: Add a frag and function to handle whether the backend want to decode or not."},{"line_number":605,"context_line":"        /*"},{"line_number":606,"context_line":"         * Try to re-assebmle the original data before attempting a decode"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5a3905b3_a3b2004a","line":603,"range":{"start_line":603,"start_character":30,"end_line":603,"end_character":31},"updated":"2017-01-23 23:26:20.000000000","message":"FULLWIDTH AMPERSAND, fancy!\n\n(I don\u0027t know that anyone actually cares; I just noticed that it renders differently in Gerrit :-)","commit_id":"7c338bd4c9524f449c1af9d4f55b08ad96e05c09"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        }"},{"line_number":600,"context_line":"    }"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    if (instance-\u003ecommon.id !\u003d EC_BACKEND_SHSS \u0026\u0026 instance-\u003ecommon.id !\u003d EC_BACKEND_LIBPHAZR) {"},{"line_number":603,"context_line":"        /* shss (ntt_backend) \u0026 libphazr backend must force to decode */"},{"line_number":604,"context_line":"        // TODO: Add a frag and function to handle whether the backend want to decode or not."},{"line_number":605,"context_line":"        /*"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_ce7e5f69","line":602,"updated":"2017-01-31 08:16:30.000000000","message":"Ok, Phazr is non-systematic code.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        }"},{"line_number":600,"context_line":"    }"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    if (instance-\u003ecommon.id !\u003d EC_BACKEND_SHSS \u0026\u0026 instance-\u003ecommon.id !\u003d EC_BACKEND_LIBPHAZR) {"},{"line_number":603,"context_line":"        /* shss (ntt_backend) \u0026 libphazr backend must force to decode */"},{"line_number":604,"context_line":"        // TODO: Add a frag and function to handle whether the backend want to decode or not."},{"line_number":605,"context_line":"        /*"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_fe148da0","line":602,"in_reply_to":"3a461143_ce7e5f69","updated":"2017-01-31 19:12:28.000000000","message":"Yes, Phazr is non-systematic to provide strong data privacy without needing encryption.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"}],"src/erasurecode_helpers.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4885c0a2115fce64a22ee5d43171e1e390c19d4b","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    aligned_size \u003d EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id ? (int) "},{"line_number":203,"context_line":"        ceill((double) data_len / ((word_size - instance-\u003eargs.uargs.p) * k)) * word_size * k : (int) "},{"line_number":204,"context_line":"        ceill((double) data_len / alignment_multiple) * alignment_multiple;"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    return aligned_size;"},{"line_number":207,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5a3905b3_e3b8882c","line":204,"updated":"2017-01-23 23:26:20.000000000","message":"Maybe worth an if/else?","commit_id":"7c338bd4c9524f449c1af9d4f55b08ad96e05c09"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":203,"context_line":"        aligned_size \u003d (int)"},{"line_number":204,"context_line":"            ceill((double) data_len / ((word_size - instance-\u003eargs.uargs.hd) * k)) * word_size * k;"},{"line_number":205,"context_line":"    } else {"},{"line_number":206,"context_line":"        aligned_size \u003d (int)"},{"line_number":207,"context_line":"            ceill((double) data_len / alignment_multiple) * alignment_multiple;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_aee673e5","line":204,"updated":"2017-01-31 08:16:30.000000000","message":"So it looks like you need more data length than pre-allocated by liberasurecode preprocessing, right?","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":203,"context_line":"        aligned_size \u003d (int)"},{"line_number":204,"context_line":"            ceill((double) data_len / ((word_size - instance-\u003eargs.uargs.hd) * k)) * word_size * k;"},{"line_number":205,"context_line":"    } else {"},{"line_number":206,"context_line":"        aligned_size \u003d (int)"},{"line_number":207,"context_line":"            ceill((double) data_len / alignment_multiple) * alignment_multiple;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_7e75fd61","line":204,"in_reply_to":"3a461143_aee673e5","updated":"2017-01-31 19:12:28.000000000","message":"Yes we need more data length.  This is necessary for our encoding.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"}],"src/erasurecode_preprocessing.c":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_096781e9","line":72,"updated":"2017-01-31 08:16:30.000000000","message":"Looking at this line, it looks like your backend requires something like\n\n\n [ free buffer ][ encoded data(copy size) ]\n\nfor each fragment buffer?\nIf you could change the order, i.e. \n\n [ encoded data (copy size) ][ free buffer ]\n\nliberasurecode already has the capability to set the extra free buffer for your backend. Please checkout backend_metadata_size to set your *extra size*.\n\nThe magic, our non-semantic code works, is using 32 for the variable and we add some extra info (what our backend needs) there. If it\u0027s possible, probably we don\u0027t mangle the common preprocessing with if-branches for each backends. Thought?","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_1e95d931","line":72,"in_reply_to":"3a461143_096781e9","updated":"2017-01-31 19:12:28.000000000","message":"Actually, our memory requires [ free buffer ][ encoded data(copy size) ] for encoding, but after decoding it will look like [ encoded data (copy size) ][ free buffer ].  It is done on purpose for efficiency in our encoding process\n\nAlso, Kota, do you have any suggestions where to set the backend_metadata_size value?","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"9ccc09b51931250691369c506a74813207ea2e33","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1a430d35_dca1d0f9","line":72,"in_reply_to":"3a461143_13983c6a","updated":"2017-02-07 23:51:07.000000000","message":"Kota, the change to dynamic backend_metadata_size has been added as discussed.  Please review and provide any feedback.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"699b362c061494c4a11c1fd1e5ef8c910377c478","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_ac949f8a","line":72,"in_reply_to":"3a461143_1e95d931","updated":"2017-01-31 19:27:55.000000000","message":"Kota, more clarification on this.  Seems the original design was meant for a fixed metadata size that’s set once in interface implementation our need is a variable metadata size which different from the original designed purpose.  So need to know how to handle a dynamic metadata size.  Thanks!","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"8b3986d84e6c54a11a10c251845397dfa2ad5f87","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_13983c6a","line":72,"in_reply_to":"3a461143_54948b89","updated":"2017-02-01 22:17:25.000000000","message":"Kota: \n\nTo make the backend_metadata_size dynamic, it\u0027ll take a day or 2 for us to come up with a proposed solution.  We\u0027ll upload the proposed changes and will wait for your feedback.\n\nTo address your data alignment question:  [ encoded data (copy size) ][ free buffer ] is 16 bytes aligned, we are treating the combined buffer as data.  Our backend is currently quite efficient.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"538d1065a5bd610f11df515672b36f08d95e9925","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      "},{"line_number":70,"context_line":"        if (data_len \u003e 0) {"},{"line_number":71,"context_line":"            if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":72,"context_line":"                memcpy(encoded_data[i] + payload_pos, orig_data, copy_size);"},{"line_number":73,"context_line":"            } else {"},{"line_number":74,"context_line":"                memcpy(encoded_data[i], orig_data, copy_size);"},{"line_number":75,"context_line":"            }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_54948b89","line":72,"in_reply_to":"3a461143_ac949f8a","updated":"2017-02-01 09:24:28.000000000","message":"For dynamic value:\n\nExactly, for now, backend_metadata_size should be fixed value[1]. However, IMO, it\u0027s common sense to change it from static member to a function like \"get_backend_metadata_size\" at op_stubs. To be honest, our backend also *wants* to make it dynamic because we could have available 2 different values, either 16 or 32, for it. (right now, set 32 though it should be overkill for 16 case)\n\n\nFor order of free buffer and encoded size:\n\nFor now, I don\u0027t have general idea for this but it could be that we could make a flag like \"data_start_at\" and set 0 to it as default for other backend and then define it as you want in your backend definition.\n\n*BUT* I\u0027m still wondering that now liberasurecode is making the encoded_data buffer starts from 16 bytes alignment for SIMD efficiency so that why your backend is efficient even though it moves to non-aligned area.\n\n\n1: https://github.com/openstack/liberasurecode/blob/master/src/backends/shss/shss.c#L306","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"a21c0c44e3171d1ec6182ce052af67405f49383f","unresolved":false,"context_lines":[{"line_number":298,"context_line":"    int ret \u003d -1;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":301,"context_line":"        word_size \u003d instance-\u003eargs.uargs.w / 8;"},{"line_number":302,"context_line":"        packed_size \u003d word_size - instance-\u003eargs.uargs.hd;"},{"line_number":303,"context_line":"    }"},{"line_number":304,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_aeaf537b","line":301,"range":{"start_line":301,"start_character":30,"end_line":301,"end_character":47},"updated":"2017-01-31 08:16:30.000000000","message":"AFAIK, args.uargs.w should mean \"word size\" so that division with 8 looks odd.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"699b362c061494c4a11c1fd1e5ef8c910377c478","unresolved":false,"context_lines":[{"line_number":298,"context_line":"    int ret \u003d -1;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":301,"context_line":"        word_size \u003d instance-\u003eargs.uargs.w / 8;"},{"line_number":302,"context_line":"        packed_size \u003d word_size - instance-\u003eargs.uargs.hd;"},{"line_number":303,"context_line":"    }"},{"line_number":304,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_ec14e7e9","line":301,"range":{"start_line":301,"start_character":30,"end_line":301,"end_character":47},"in_reply_to":"3a461143_212c3898","updated":"2017-01-31 19:27:55.000000000","message":"However, please take a look at erasurecode_helpers.c Line 188.    Seems \"w\" is a bit width instead?  Please clarify.  Thanks!","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"b4444d9fe087f351223325847a8077a72685b399","unresolved":false,"context_lines":[{"line_number":298,"context_line":"    int ret \u003d -1;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    if (EC_BACKEND_LIBPHAZR \u003d\u003d instance-\u003ecommon.id) {"},{"line_number":301,"context_line":"        word_size \u003d instance-\u003eargs.uargs.w / 8;"},{"line_number":302,"context_line":"        packed_size \u003d word_size - instance-\u003eargs.uargs.hd;"},{"line_number":303,"context_line":"    }"},{"line_number":304,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3a461143_212c3898","line":301,"range":{"start_line":301,"start_character":30,"end_line":301,"end_character":47},"in_reply_to":"3a461143_aeaf537b","updated":"2017-01-31 19:12:28.000000000","message":"Thanks for the clarification, we\u0027ll need to make a change.","commit_id":"f5d81d73a3644edd0db801784ea7d1b94d2fe294"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"63fb25cb015c6c351ae5ea4e5c604f17c9e80c80","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    metadata_size \u003d instance-\u003ecommon.ops-\u003eget_backend_metadata_size("},{"line_number":53,"context_line":"                                    instance-\u003edesc.backend_desc,"},{"line_number":54,"context_line":"                                    *blocksize);"},{"line_number":55,"context_line":"    metadata_offset \u003d instance-\u003ecommon.set_encode_data_offset ? metadata_size : 0;"},{"line_number":56,"context_line":"    buffer_size \u003d payload_size + metadata_size;"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    for (i \u003d 0; i \u003c k; i++) {"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"da36d5c6_d34e93c0","line":55,"updated":"2017-02-20 20:28:01.000000000","message":"I\u0027m not sure on my opinion but this could be a pain on making generic way to add the offset as well as backend_metadata size.\n\nI think the offset \u003d\u003d metadat_size is not trivial for any backends even if set_encode_data_offset \u003d 1.\n\nI know, the conflicted thing to make this complicated is \"shss requires additional metadata length but not requires offset\" but \"phazr requires both additional metadata and the offset\". And offset length at phazr is now depending on the block_size (i.e. need to make it dynamic)\n\nHmm... right now, I\u0027m feeling it could be better the offset value is dynamic too rather than handle with bool value.","commit_id":"ba4e66a6e4008c1ba1cdce971f22f4d4b4c51fcc"}],"test/liberasurecode_test.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4885c0a2115fce64a22ee5d43171e1e390c19d4b","unresolved":false,"context_lines":[{"line_number":241,"context_line":"struct ec_args libphazr_44_args \u003d {"},{"line_number":242,"context_line":"    .k \u003d 4,"},{"line_number":243,"context_line":"    .m \u003d 4,"},{"line_number":244,"context_line":"};"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"struct ec_args *libphazr_test_args[] \u003d {"},{"line_number":247,"context_line":"               \u0026libphazr_args,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5a3905b3_837ee467","line":244,"updated":"2017-01-23 23:26:20.000000000","message":"Should these have .p set?","commit_id":"7c338bd4c9524f449c1af9d4f55b08ad96e05c09"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"06d313fd2e3293efb358d8158b9c0f163b6cafd4","unresolved":false,"context_lines":[{"line_number":2257,"context_line":"    {\"test_verify_stripe_metadata_frag_idx_invalid\","},{"line_number":2258,"context_line":"        test_verify_stripe_metadata_frag_idx_invalid,"},{"line_number":2259,"context_line":"        EC_BACKEND_LIBPHAZR, CHKSUM_CRC32,"},{"line_number":2260,"context_line":"        .skip \u003d false},"},{"line_number":2261,"context_line":"    { NULL, NULL, 0, 0, false },"},{"line_number":2262,"context_line":"};"},{"line_number":2263,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_e457bc55","line":2260,"updated":"2017-02-24 08:10:26.000000000","message":"Should we include test_simple_encode_decode_over32 ? Does libphazr support k + m \u003e 32?","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ccb327e91390f1fee7ecd4a79c6067fde0397883","unresolved":false,"context_lines":[{"line_number":2257,"context_line":"    {\"test_verify_stripe_metadata_frag_idx_invalid\","},{"line_number":2258,"context_line":"        test_verify_stripe_metadata_frag_idx_invalid,"},{"line_number":2259,"context_line":"        EC_BACKEND_LIBPHAZR, CHKSUM_CRC32,"},{"line_number":2260,"context_line":"        .skip \u003d false},"},{"line_number":2261,"context_line":"    { NULL, NULL, 0, 0, false },"},{"line_number":2262,"context_line":"};"},{"line_number":2263,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_da2963f4","line":2260,"in_reply_to":"da36d5c6_5150310b","updated":"2017-02-27 19:57:10.000000000","message":"Turns out I was wrong to suggest it anyway -- that test is targeted only to jerasure (although you wouldn\u0027t know it by the testcase definition).","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"},{"author":{"_account_id":24559,"name":"Jim Cheung","email":"jim.cheung@phazr.io","username":"jimcheung"},"change_message_id":"27e1792a1a1be4e32e9fe645b5b73fb25993330b","unresolved":false,"context_lines":[{"line_number":2257,"context_line":"    {\"test_verify_stripe_metadata_frag_idx_invalid\","},{"line_number":2258,"context_line":"        test_verify_stripe_metadata_frag_idx_invalid,"},{"line_number":2259,"context_line":"        EC_BACKEND_LIBPHAZR, CHKSUM_CRC32,"},{"line_number":2260,"context_line":"        .skip \u003d false},"},{"line_number":2261,"context_line":"    { NULL, NULL, 0, 0, false },"},{"line_number":2262,"context_line":"};"},{"line_number":2263,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"da36d5c6_5150310b","line":2260,"in_reply_to":"da36d5c6_e457bc55","updated":"2017-02-24 22:14:14.000000000","message":"We don\u0027t have k + m \u003e 32 currently.","commit_id":"91cdc6238807f25d804e435231c49f0de770249e"}]}
