)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ac8156aec294e404fbd4cf69106d936611cd701f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a4ca2cca_c1207bdc","updated":"2026-01-09 20:57:37.000000000","message":"It\u0027s been more than a year to for anyone to raise objections -- let\u0027s merge it.","commit_id":"950a402abb8158279252fef99feda4bb9105ee5a"}],"src/erasurecode.c":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"e733e5defd8fc388eca6cf4d7585368942d744f7","unresolved":true,"context_lines":[{"line_number":84,"context_line":" * Look up a backend instance by descriptor"},{"line_number":85,"context_line":" *"},{"line_number":86,"context_line":" * @returns pointer to a registered liberasurecode instance"},{"line_number":87,"context_line":" * The caller must hold active_instances_rwlock"},{"line_number":88,"context_line":" */"},{"line_number":89,"context_line":"ec_backend_t liberasurecode_backend_instance_get_by_desc(int desc)"},{"line_number":90,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a72bc052_f21a6cd9","side":"PARENT","line":87,"range":{"start_line":87,"start_character":3,"end_line":87,"end_character":47},"updated":"2024-09-19 07:20:49.000000000","message":"There does seem to be instances where we document that you need to have a rwlock hold.","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e250e1f59119eecccee12104d7161b08a9fa9293","unresolved":true,"context_lines":[{"line_number":84,"context_line":" * Look up a backend instance by descriptor"},{"line_number":85,"context_line":" *"},{"line_number":86,"context_line":" * @returns pointer to a registered liberasurecode instance"},{"line_number":87,"context_line":" * The caller must hold active_instances_rwlock"},{"line_number":88,"context_line":" */"},{"line_number":89,"context_line":"ec_backend_t liberasurecode_backend_instance_get_by_desc(int desc)"},{"line_number":90,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a20039a8_700ded82","side":"PARENT","line":87,"range":{"start_line":87,"start_character":3,"end_line":87,"end_character":47},"in_reply_to":"a72bc052_f21a6cd9","updated":"2024-09-19 16:11:40.000000000","message":"Yep; that\u0027s what tipped me off to write https://bugs.launchpad.net/liberasurecode/+bug/1954351\n\nAs I dug into it, I discovered that it\u0027s not a re-entrant lock, though -- so I couldn\u0027t just add another locking call in `liberasurecode_instance_destroy` and leave the one in `liberasurecode_backend_instance_unregister`; the second call would always return `EDEADLOCK`.","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"13d605a22df02562e275d2a6609dd0c32d9202a5","unresolved":true,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"exit:"},{"line_number":162,"context_line":"    return rc;"},{"line_number":163,"context_line":"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode backend API helpers \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d */"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5eb79405_59d5e350","side":"PARENT","line":163,"updated":"2024-09-19 07:14:37.000000000","message":"Well I see no reference to this or liberasurecode_instance_destroy in pyeclib. I guess we just never stop using an instance once we build one. OR the deconstrutor does some magic GC.\nAnyway, I dont see the hard in loosing this in the API.\n\nIf we didn\u0027t want to loose it, we could just removed the reference in the erasurecode.h and put it in the top of erasurecode.c so it\u0027s only available internally.. but hey we\u0027re not using it either.","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e250e1f59119eecccee12104d7161b08a9fa9293","unresolved":true,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"exit:"},{"line_number":162,"context_line":"    return rc;"},{"line_number":163,"context_line":"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode backend API helpers \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d */"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"65a2afef_4f3ce0c0","side":"PARENT","line":163,"in_reply_to":"5eb79405_59d5e350","updated":"2024-09-19 16:11:40.000000000","message":"\u003e Well I see no reference to this or liberasurecode_instance_destroy in pyeclib. I guess we just never stop using an instance once we build one. OR the deconstrutor does some magic GC.\n\nYeah, it\u0027s the first one. https://bugs.launchpad.net/pyeclib/+bug/1954352\n\nFWIW, neither [my golang bindings](https://github.com/tipabu/erasurecode) nor [Scality\u0027s fork](https://github.com/scality/erasurecode) use the `register`/`unregister` functions, either.\n\n\u003e If we didn\u0027t want to loose it, we could just removed the reference in the erasurecode.h and put it in the top of erasurecode.c so it\u0027s only available internally.. but hey we\u0027re not using it either.\n\nI debated about that, but it would have to lose the locking, and without that, this reduces to just `SLIST_REMOVE(\u0026active_instances, instance, ec_backend, link);`\n\nIf we want to get serious about tracking symbol addition/removal, check out https://review.opendev.org/c/openstack/liberasurecode/+/929855","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"75c67f657e69c129f952366c65ba9d582191b92f","unresolved":true,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"exit:"},{"line_number":162,"context_line":"    return rc;"},{"line_number":163,"context_line":"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode backend API helpers \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d */"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"94e84e2f_92925d8c","side":"PARENT","line":163,"in_reply_to":"65a2afef_4f3ce0c0","updated":"2024-10-15 21:03:53.000000000","message":"Went ahead and merged that patch, so now this shows the symbol removal. FWIW, we\u0027ve done similar removals of largely-internal helpers before: https://github.com/openstack/liberasurecode/commit/e426aee95b616778e4a8e484c3a56c691a2b9c52","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e5f4e09307de29d51335bb346d2241ad37787160","unresolved":true,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"exit:"},{"line_number":162,"context_line":"    return rc;"},{"line_number":163,"context_line":"}"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode backend API helpers \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d */"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"d12a4ae6_6cebcef6","side":"PARENT","line":163,"in_reply_to":"94e84e2f_92925d8c","updated":"2025-12-15 21:04:45.000000000","message":"Oh, and I merged https://review.opendev.org/c/openstack/liberasurecode/+/929583 so the symbol is *already* non-public.","commit_id":"419f09691fc291ea7e19276a074fa7c252758339"}]}
