]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client/smbdirect: introduce SMBDIRECT_SOCKET_ERROR
authorStefan Metzmacher <metze@samba.org>
Thu, 28 Aug 2025 08:39:56 +0000 (10:39 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:48 +0000 (18:29 -0500)
This will be used to turn SMBDIRECT_SOCKET_CONNECTED into an
error within smbd_disconnect_rdma_connection() on the client
and smb_direct_disconnect_rdma_connection() on the server.

We do this in a single commit with the client as otherwise it
won't build because the enum value is not handled in the
switch statement.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Acked-by: 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>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smbdirect.c
fs/smb/common/smbdirect/smbdirect_socket.h

index e4abc1a9564ada74a95d2ed3bdec67a934dfffb6..09f8b12dd4f10932caf4eb87defd1c17d0620593 100644 (file)
@@ -166,6 +166,7 @@ static void smbd_disconnect_rdma_work(struct work_struct *work)
        case SMBDIRECT_SOCKET_NEGOTIATE_RUNNING:
        case SMBDIRECT_SOCKET_NEGOTIATE_FAILED:
        case SMBDIRECT_SOCKET_CONNECTED:
+       case SMBDIRECT_SOCKET_ERROR:
                sc->status = SMBDIRECT_SOCKET_DISCONNECTING;
                rdma_disconnect(sc->rdma.cm_id);
                break;
index ced8c9f20cf55f6f08a70114e3aeedb6eee0926b..5e25abc0236490e7245f8be98dcedf1dc0f42f35 100644 (file)
@@ -23,6 +23,7 @@ enum smbdirect_socket_status {
        SMBDIRECT_SOCKET_NEGOTIATE_RUNNING,
        SMBDIRECT_SOCKET_NEGOTIATE_FAILED,
        SMBDIRECT_SOCKET_CONNECTED,
+       SMBDIRECT_SOCKET_ERROR,
        SMBDIRECT_SOCKET_DISCONNECTING,
        SMBDIRECT_SOCKET_DISCONNECTED,
        SMBDIRECT_SOCKET_DESTROYED
@@ -60,6 +61,8 @@ const char *smbdirect_socket_status_string(enum smbdirect_socket_status status)
                return "NEGOTIATE_FAILED";
        case SMBDIRECT_SOCKET_CONNECTED:
                return "CONNECTED";
+       case SMBDIRECT_SOCKET_ERROR:
+               return "ERROR";
        case SMBDIRECT_SOCKET_DISCONNECTING:
                return "DISCONNECTING";
        case SMBDIRECT_SOCKET_DISCONNECTED: