)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f96dbb54874ee14a958862d0419066874497651b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"338866e0_c764511a","updated":"2025-08-19 15:54:19.000000000","message":"Hey Rajat, thanks for the review.\n\nJust to clarify, this patch does not enable MC/S (multiple TCP connections inside a single iSCSI session). Instead, allows hosts to create multiple independent iSCSI sessions to the same target/portal, each with one TCP connection, and leaves aggregation/failover to dm-multipath.\n\nEach one of those sessions are 1 connection to the portal (not MC/S) and is a way to improve throughput scaling, CPU/RSS distribution and High availability. It does leverage dm-multipath and is a configuration expected/accepted by the main vendor drivers (NetApp, Pure, Dell, etc, all accept this).\n\n[1] https://docs.netapp.com/us-en/ontap-apps-dbs/microsoft/win_san.html#configure-iscsi\n[2] https://www.dell.com/support/manuals/pt-br/networker/nw_p_performance_opt_plan/networker-80-and-later-software?guid\u003dguid-853b91d0-335f-4146-b4e1-fd00517a0029\u0026lang\u003den-us#:~:text\u003dThis%20continues%20until%20the%20max,then%20update%20max%20nsrmmd%20count.","commit_id":"9ed3b17d9a259388c63d4f391e55602672232143"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"f2ece2007249f4a40d66da56200216c052934c70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2a9f8aa3_ef0f5e6c","updated":"2025-08-13 15:52:06.000000000","message":"Looking at the code I think this looks ok.  Thanks!","commit_id":"9ed3b17d9a259388c63d4f391e55602672232143"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b5fd1b2d1a0257051c51edfccd84154e19f9ddf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"96153bdb_f0c199f1","updated":"2025-08-13 20:49:41.000000000","message":"this looks like we are trying to configure multiple TCP connections per iSCSI connections (MC/S). This is another way to achieve multipathing but we already recommend using dm-multipath (which is generic for iSCSI as well as FC) and generally it\u0027s recommended to limit one TCP connection per iSCSI connection.","commit_id":"9ed3b17d9a259388c63d4f391e55602672232143"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"14b6d8de425b4aa6e07980e8f37fd6e3c1a46feb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a81ec686_feee5fc4","updated":"2026-02-06 14:51:30.000000000","message":"Adds key debug outputs for future debugging and fixes the bug. lgtm","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":33933,"name":"Pedro Victor Lourenço Fragola","email":"pedro.lourenco.fragola@canonical.com","username":"pedrovlf"},"change_message_id":"c1debdc0767582ad760ba519ad538e408206a2df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"baa82955_8914973a","updated":"2025-10-06 16:10:28.000000000","message":"I tested the patch and it worked for both bugs LP#2116553 and LP#2092195","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"01d944a534de2726c149a0650b4617c2cb8e14ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2d4b40a2_5b338589","updated":"2025-11-21 14:27:57.000000000","message":"LGTM","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"d8d5bdbc4470353d931db582df01e0465f55f64f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d30643a4_a2cf02ad","updated":"2025-10-06 14:39:18.000000000","message":"LGTM, thanks for the fix","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b7de9bf2e67f695c617a075ebda1473916e403ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"faa97546_2f2238fe","updated":"2026-02-21 05:37:13.000000000","message":"Thanks Erlon for the fix. Though I would still like to understand more details on why the multipath devices doesn\u0027t get cleared even if all devices get removed and we also issue multipath -f to flush the device, at least I\u0027m assured that this won\u0027t lead to potential regression and we are just making the scan wider across multiple sessions but only removing the LUN in picture. LGTM.","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4c1ad9295e8f94c23e11edc632becbfc32758dcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4af30b68_38843df2","updated":"2026-01-15 17:37:40.000000000","message":"This is something definatlry needed","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e739e3b2c09669a3a65640cdbdc5c13c7c2b121a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c467a1ef_af2a8fe2","updated":"2026-02-18 14:35:47.000000000","message":"run Pure Storage CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"8dc27169bcee35fccb666f75666e67803c01ed21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eb487131_971299c4","updated":"2026-02-18 14:29:43.000000000","message":"run-NetApp CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"e97839c3a0c876090949df090f2136b8e3dd9e53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cb13334f_9708a1a6","updated":"2026-02-18 14:29:16.000000000","message":"run-NetApp Solidfire CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"f1644021460b3da62f95c67e6d1072f8e2d45e5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e81420a5_2fbf1d61","updated":"2026-02-18 15:22:25.000000000","message":"run-Quobyte CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"125c5725586c56afd7ed4c01cef1f5812d1ddfed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"76dc89e2_c8626ff6","updated":"2026-02-19 08:48:24.000000000","message":"run-Quobyte CI\n\nci quick fix was too quick but updated fix works now.","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"beeb829cc9f2e7ad266bdc4c5e7769e12e34d8f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5af21bfd_8b6dd099","updated":"2026-02-18 15:37:08.000000000","message":"run-Quobyte CI    \n\njust found and fixed a python dep issue, therefore rerun...","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"115d9ddaaf0be46ee582541df1da1be7b3a18436","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"35330245_1afcf0b1","updated":"2025-10-07 10:12:50.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"bf2dc86fb3a8bba5092fb33bc32b4759f4efd0b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4e7d436b_4c4f5e90","updated":"2026-02-18 14:32:09.000000000","message":"run-Yadro Tatlin Unified CI","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"7eaef2f1505b4c100a755aadd3f841a881b7942e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"71f0990b_853b931c","updated":"2026-02-18 14:33:41.000000000","message":"run-storpoolci","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"}],"os_brick/initiator/connectors/iscsi.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e30e6870658c4109bc5c8bde49ab592e34ae4fac","unresolved":true,"context_lines":[{"line_number":848,"context_line":"        _cleanup_conection method."},{"line_number":849,"context_line":"        \"\"\""},{"line_number":850,"context_line":"        LOG.debug(\"_get_connection_devices called with parameters: \""},{"line_number":851,"context_line":"                  \"connection_properties\u003d%s, ips_iqns_luns\u003d%s, \""},{"line_number":852,"context_line":"                  \"is_disconnect_call\u003d%s\", connection_properties,"},{"line_number":853,"context_line":"                  ips_iqns_luns, is_disconnect_call)"},{"line_number":854,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ad68e7b9_be19e2a5","line":851,"range":{"start_line":851,"start_character":19,"end_line":851,"end_character":40},"updated":"2026-02-20 14:41:16.000000000","message":"IIRC connection_properties may contain credentials such as password and in general we should not log it in plain text. We probably need a filter function to mask potentially sensitive keys.\n\nHowever I found a few other places where connection_properties is already dumped into debug logs without any masking so I think we can fix it separately...","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b7de9bf2e67f695c617a075ebda1473916e403ac","unresolved":true,"context_lines":[{"line_number":848,"context_line":"        _cleanup_conection method."},{"line_number":849,"context_line":"        \"\"\""},{"line_number":850,"context_line":"        LOG.debug(\"_get_connection_devices called with parameters: \""},{"line_number":851,"context_line":"                  \"connection_properties\u003d%s, ips_iqns_luns\u003d%s, \""},{"line_number":852,"context_line":"                  \"is_disconnect_call\u003d%s\", connection_properties,"},{"line_number":853,"context_line":"                  ips_iqns_luns, is_disconnect_call)"},{"line_number":854,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"567608de_4de2be7b","line":851,"range":{"start_line":851,"start_character":19,"end_line":851,"end_character":40},"in_reply_to":"23a1a1ab_82b7802c","updated":"2026-02-21 05:37:13.000000000","message":"+1, we should make a note of these cases otherwise could lead to possible security vulnerabilities.","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"fb5d3774fd8405500f5acea8ccb15e5dbbebce9c","unresolved":true,"context_lines":[{"line_number":848,"context_line":"        _cleanup_conection method."},{"line_number":849,"context_line":"        \"\"\""},{"line_number":850,"context_line":"        LOG.debug(\"_get_connection_devices called with parameters: \""},{"line_number":851,"context_line":"                  \"connection_properties\u003d%s, ips_iqns_luns\u003d%s, \""},{"line_number":852,"context_line":"                  \"is_disconnect_call\u003d%s\", connection_properties,"},{"line_number":853,"context_line":"                  ips_iqns_luns, is_disconnect_call)"},{"line_number":854,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"23a1a1ab_82b7802c","line":851,"range":{"start_line":851,"start_character":19,"end_line":851,"end_character":40},"in_reply_to":"ad68e7b9_be19e2a5","updated":"2026-02-20 14:53:37.000000000","message":"I\u0027ve proposed a follow-up to address this.\nhttps://review.opendev.org/c/openstack/os-brick/+/977447","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b7de9bf2e67f695c617a075ebda1473916e403ac","unresolved":true,"context_lines":[{"line_number":872,"context_line":"        device_map: defaultdict \u003d defaultdict(lambda: (set(), set()))"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        for ip, iqn, lun in ips_iqns_luns:"},{"line_number":875,"context_line":"            # Find all sessions matching this (ip, iqn) or just the iqn"},{"line_number":876,"context_line":"            matching_sessions \u003d []"},{"line_number":877,"context_line":"            for sess_ip, sess_iqn, session_id in sessions_list:"},{"line_number":878,"context_line":"                if sess_ip \u003d\u003d ip and sess_iqn \u003d\u003d iqn:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f93cecd1_f38ad4bd","line":875,"range":{"start_line":875,"start_character":56,"end_line":875,"end_character":71},"updated":"2026-02-21 05:37:13.000000000","message":"I don\u0027t see this condition being checked anywhere. On L#878, we put an AND condition on the (ip, iqn) pair, but if that doesn\u0027t evaluate to true, we don\u0027t check for just the IQN?","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b7de9bf2e67f695c617a075ebda1473916e403ac","unresolved":false,"context_lines":[{"line_number":906,"context_line":"                    # For partitions turn them into the whole device:"},{"line_number":907,"context_line":"                    # sde1 -\u003e sde"},{"line_number":908,"context_line":"                    device \u003d device.strip(\u00270123456789\u0027)"},{"line_number":909,"context_line":"                    if lun_path \u003d\u003d lun:"},{"line_number":910,"context_line":"                        belong.add(device)"},{"line_number":911,"context_line":"                    else:"},{"line_number":912,"context_line":"                        others.add(device)"},{"line_number":913,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"51831a22_6951b323","line":910,"range":{"start_line":909,"start_character":20,"end_line":910,"end_character":42},"updated":"2026-02-21 05:37:13.000000000","message":"This assures me that we are not removing any other (unintended) device","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"}],"os_brick/tests/initiator/connectors/test_iscsi.py":[{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"14b6d8de425b4aa6e07980e8f37fd6e3c1a46feb","unresolved":true,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        res \u003d self.connector._get_connection_devices(mock.sentinel.props,"},{"line_number":279,"context_line":"                                                     ips_iqns_luns)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # Expected: devices from target LUNs should be in \u0027belong\u0027 set,"},{"line_number":282,"context_line":"        # devices from other LUNs should be in \u0027others\u0027 set"},{"line_number":283,"context_line":"        expected \u003d {"},{"line_number":284,"context_line":"            (\u0027ip1:port1\u0027, \u0027tgt1\u0027): ({\u0027sda\u0027}, {\u0027sdb\u0027, \u0027sdc\u0027}),  # LUN 4"},{"line_number":285,"context_line":"            (\u0027ip2:port1\u0027, \u0027tgt1\u0027): ({\u0027sdd\u0027}, {\u0027sde\u0027, \u0027sdf\u0027}),  # LUN 5"}],"source_content_type":"text/x-python","patch_set":3,"id":"82c27635_e8eadc63","line":282,"range":{"start_line":280,"start_character":0,"end_line":282,"end_character":59},"updated":"2026-02-06 14:51:30.000000000","message":"nit: belong and others references are not directly clear. Maybe rephrase more explicitly (but only if the change get\u0027s an update for other reasons).","commit_id":"eb51e427aaa3b1270f839955d369378b2b7e6f19"}]}
