Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

RDMA/rtrs: Improve error logging for RDMA cm events

The member variable status in the struct rdma_cm_event is used for both
linux errors and the errors definded in rdma stack.

Signed-off-by: Kim Zhu <zhu.yanjun@ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Grzegorz Prajsner <grzegorz.prajsner@ionos.com>
Link: https://patch.msgid.link/20260107161517.56357-5-haris.iqbal@ionos.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>

authored by

Kim Zhu and committed by
Leon Romanovsky
f85febf5 9293e042

+54 -14
+36 -10
drivers/infiniband/ulp/rtrs/rtrs-clt.c
··· 1946 1946 status, rej_msg, ERR_PTR(errno)); 1947 1947 } else { 1948 1948 rtrs_err(s, 1949 - "Connect rejected but with malformed message: status %pe (%s)\n", 1950 - ERR_PTR(status), rej_msg); 1949 + "Connect rejected but with malformed message: status %d (%s)\n", 1950 + status, rej_msg); 1951 1951 } 1952 1952 1953 1953 return -ECONNRESET; ··· 2014 2014 case RDMA_CM_EVENT_UNREACHABLE: 2015 2015 case RDMA_CM_EVENT_ADDR_CHANGE: 2016 2016 case RDMA_CM_EVENT_TIMEWAIT_EXIT: 2017 - rtrs_wrn(s, "CM error (CM event: %s, err: %pe)\n", 2018 - rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2017 + if (ev->status < 0) { 2018 + rtrs_wrn(s, "CM error (CM event: %s, err: %pe)\n", 2019 + rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2020 + } else if (ev->status > 0) { 2021 + rtrs_wrn(s, "CM error (CM event: %s, err: %s)\n", 2022 + rdma_event_msg(ev->event), 2023 + rdma_reject_msg(cm_id, ev->status)); 2024 + } 2019 2025 cm_err = -ECONNRESET; 2020 2026 break; 2021 2027 case RDMA_CM_EVENT_ADDR_ERROR: 2022 2028 case RDMA_CM_EVENT_ROUTE_ERROR: 2023 - rtrs_wrn(s, "CM error (CM event: %s, err: %pe)\n", 2024 - rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2029 + if (ev->status < 0) { 2030 + rtrs_wrn(s, "CM error (CM event: %s, err: %pe)\n", 2031 + rdma_event_msg(ev->event), 2032 + ERR_PTR(ev->status)); 2033 + } else if (ev->status > 0) { 2034 + rtrs_wrn(s, "CM error (CM event: %s, err: %s)\n", 2035 + rdma_event_msg(ev->event), 2036 + rdma_reject_msg(cm_id, ev->status)); 2037 + } 2025 2038 cm_err = -EHOSTUNREACH; 2026 2039 break; 2027 2040 case RDMA_CM_EVENT_DEVICE_REMOVAL: 2028 2041 /* 2029 2042 * Device removal is a special case. Queue close and return 0. 2030 2043 */ 2031 - rtrs_wrn_rl(s, "CM event: %s, status: %pe\n", rdma_event_msg(ev->event), 2032 - ERR_PTR(ev->status)); 2044 + if (ev->status < 0) { 2045 + rtrs_wrn_rl(s, "CM event: %s, status: %pe\n", 2046 + rdma_event_msg(ev->event), 2047 + ERR_PTR(ev->status)); 2048 + } else if (ev->status > 0) { 2049 + rtrs_wrn_rl(s, "CM event: %s, status: %s\n", 2050 + rdma_event_msg(ev->event), 2051 + rdma_reject_msg(cm_id, ev->status)); 2052 + } 2033 2053 rtrs_clt_close_conns(clt_path, false); 2034 2054 return 0; 2035 2055 default: 2036 - rtrs_err(s, "Unexpected RDMA CM error (CM event: %s, err: %pe)\n", 2037 - rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2056 + if (ev->status < 0) { 2057 + rtrs_err(s, "Unexpected RDMA CM error (CM event: %s, err: %pe)\n", 2058 + rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2059 + } else if (ev->status > 0) { 2060 + rtrs_err(s, "Unexpected RDMA CM error (CM event: %s, err: %s)\n", 2061 + rdma_event_msg(ev->event), 2062 + rdma_reject_msg(cm_id, ev->status)); 2063 + } 2038 2064 cm_err = -ECONNRESET; 2039 2065 break; 2040 2066 }
+18 -4
drivers/infiniband/ulp/rtrs/rtrs-srv.c
··· 2012 2012 case RDMA_CM_EVENT_REJECTED: 2013 2013 case RDMA_CM_EVENT_CONNECT_ERROR: 2014 2014 case RDMA_CM_EVENT_UNREACHABLE: 2015 - rtrs_err(s, "CM error (CM event: %s, err: %pe)\n", 2016 - rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2015 + if (ev->status < 0) { 2016 + rtrs_err(s, "CM error (CM event: %s, err: %pe)\n", 2017 + rdma_event_msg(ev->event), 2018 + ERR_PTR(ev->status)); 2019 + } else if (ev->status > 0) { 2020 + rtrs_err(s, "CM error (CM event: %s, err: %s)\n", 2021 + rdma_event_msg(ev->event), 2022 + rdma_reject_msg(cm_id, ev->status)); 2023 + } 2017 2024 fallthrough; 2018 2025 case RDMA_CM_EVENT_DISCONNECTED: 2019 2026 case RDMA_CM_EVENT_ADDR_CHANGE: ··· 2029 2022 close_path(srv_path); 2030 2023 break; 2031 2024 default: 2032 - pr_err("Ignoring unexpected CM event %s, err %pe\n", 2033 - rdma_event_msg(ev->event), ERR_PTR(ev->status)); 2025 + if (ev->status < 0) { 2026 + pr_err("Ignoring unexpected CM event %s, err %pe\n", 2027 + rdma_event_msg(ev->event), 2028 + ERR_PTR(ev->status)); 2029 + } else if (ev->status > 0) { 2030 + pr_err("Ignoring unexpected CM event %s, err %s\n", 2031 + rdma_event_msg(ev->event), 2032 + rdma_reject_msg(cm_id, ev->status)); 2033 + } 2034 2034 break; 2035 2035 } 2036 2036