]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: add some logging to SMBDIRECT_CHECK_STATUS_{WARN,DISCONNECT}()
authorStefan Metzmacher <metze@samba.org>
Fri, 21 Nov 2025 09:56:34 +0000 (10:56 +0100)
committerSteve French <stfrench@microsoft.com>
Sun, 12 Apr 2026 23:07:55 +0000 (18:07 -0500)
This should make it easier to analyze any possible problems.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect_socket.h

index 568965172b9374341b6c14e14c1f86531b5ff701..22184e53d445ff2c5915a8f1e4db532941e4226f 100644 (file)
@@ -563,7 +563,6 @@ static __always_inline void smbdirect_socket_init(struct smbdirect_socket *sc)
 
 #define __SMBDIRECT_CHECK_STATUS_WARN(__sc, __expected_status, __unexpected_cmd) \
        __SMBDIRECT_CHECK_STATUS_FAILED(__sc, __expected_status, \
-       , \
        { \
                const struct sockaddr_storage *__src = NULL; \
                const struct sockaddr_storage *__dst = NULL; \
@@ -571,6 +570,26 @@ static __always_inline void smbdirect_socket_init(struct smbdirect_socket *sc)
                        __src = &(__sc)->rdma.cm_id->route.addr.src_addr; \
                        __dst = &(__sc)->rdma.cm_id->route.addr.dst_addr; \
                } \
+               smbdirect_log_rdma_event(sc, SMBDIRECT_LOG_INFO, \
+                       "expected[%s] != %s first_error=%1pe local=%pISpsfc remote=%pISpsfc\n", \
+                       smbdirect_socket_status_string(__expected_status), \
+                       smbdirect_socket_status_string((__sc)->status), \
+                       SMBDIRECT_DEBUG_ERR_PTR((__sc)->first_error), \
+                       __src, __dst); \
+       }, \
+       { \
+               const struct sockaddr_storage *__src = NULL; \
+               const struct sockaddr_storage *__dst = NULL; \
+               if ((__sc)->rdma.cm_id) { \
+                       __src = &(__sc)->rdma.cm_id->route.addr.src_addr; \
+                       __dst = &(__sc)->rdma.cm_id->route.addr.dst_addr; \
+               } \
+               smbdirect_log_rdma_event(sc, SMBDIRECT_LOG_ERR, \
+                       "expected[%s] != %s first_error=%1pe local=%pISpsfc remote=%pISpsfc\n", \
+                       smbdirect_socket_status_string(__expected_status), \
+                       smbdirect_socket_status_string((__sc)->status), \
+                       SMBDIRECT_DEBUG_ERR_PTR((__sc)->first_error), \
+                       __src, __dst); \
                WARN_ONCE(1, \
                        "expected[%s] != %s first_error=%1pe local=%pISpsfc remote=%pISpsfc\n", \
                        smbdirect_socket_status_string(__expected_status), \