)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c1445fbd0c659adccdf0c8e6473c9b2661ad26b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1040e8c9_c456ac34","updated":"2026-07-19 14:10:07.000000000","message":"recheck","commit_id":"af9cb82ca352247fb291a5972e0d810762a5d4bb"}],"cinder/volume/targets/nvmeof.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"83dea813c4cf2973ab91c6712b54c25979a29703","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    target_protocol_map \u003d {"},{"line_number":35,"context_line":"        \u0027nvmet_rdma\u0027: \u0027rdma\u0027,"},{"line_number":36,"context_line":"        \u0027nvmet_tcp\u0027: \u0027tcp\u0027,"},{"line_number":37,"context_line":"        \u0027nvmet_fc\u0027: \u0027fc\u0027,"},{"line_number":38,"context_line":"    }"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2ff208e1_6f3b3cd4","line":37,"updated":"2026-07-21 14:24:49.000000000","message":"The blueprint defines the NVMe/FC version-2 portal contract as:\n(\u0027nn-0x\u003cwwnn\u003e:pn-0x\u003cwwpn\u003e\u0027, 0, \u0027fc\u0027)\nAdding only \u0027nvmet_fc\u0027: \u0027fc\u0027 does not appear sufficient to make the base target produce that contract. The current base class derives portals from self.target_ips and self.target_port, which is appropriate for TCP/RDMA but not for NVMe/FC. The concrete NVMET implementation also currently IP-oriented.","commit_id":"af9cb82ca352247fb291a5972e0d810762a5d4bb"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"60074b778c45395d913547022a8c0334b5441239","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    target_protocol_map \u003d {"},{"line_number":35,"context_line":"        \u0027nvmet_rdma\u0027: \u0027rdma\u0027,"},{"line_number":36,"context_line":"        \u0027nvmet_tcp\u0027: \u0027tcp\u0027,"},{"line_number":37,"context_line":"        \u0027nvmet_fc\u0027: \u0027fc\u0027,"},{"line_number":38,"context_line":"    }"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"26268068_e3c8b3c0","line":37,"in_reply_to":"2ff208e1_6f3b3cd4","updated":"2026-07-21 14:38:21.000000000","message":"Agreed — the reference NVMeOF target is IP-oriented (target_ips/target_port) and can\u0027t produce the nn-0x…:pn-0x… v2 portal contract, so \u0027nvmet_fc\u0027: \u0027fc\u0027 was a validation gate with no implementation behind it. NVMe/FC in this series is delivered by vendor drivers that emit the v2 contract directly (they don\u0027t route through target_protocol_map) plus the zone-manager trigger in this change.\nI\u0027ll remove the nvmet_fc entry; an FC-capable reference nvmet target would be a separate blueprint. Thanks for catching it.","commit_id":"af9cb82ca352247fb291a5972e0d810762a5d4bb"}]}
