]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb: client: only use a single wait_queue to monitor smbdirect connection status
authorStefan Metzmacher <metze@samba.org>
Thu, 7 Aug 2025 16:12:14 +0000 (18:12 +0200)
committerSteve French <stfrench@microsoft.com>
Thu, 7 Aug 2025 17:40:11 +0000 (12:40 -0500)
There's no need for separate conn_wait and disconn_wait queues.

This will simplify the move to common code, the server code
already a single wait_queue for this.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
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/client/smbdirect.h

index c819cc6dcc4f8b6a87054d3248f8bc8e3dcad837..c628e91c328bf760c6d9c51a696d35e82f39f16f 100644 (file)
@@ -205,7 +205,7 @@ static int smbd_conn_upcall(
        case RDMA_CM_EVENT_ESTABLISHED:
                log_rdma_event(INFO, "connected event=%s\n", event_name);
                sc->status = SMBDIRECT_SOCKET_CONNECTED;
-               wake_up_interruptible(&info->conn_wait);
+               wake_up_interruptible(&info->status_wait);
                break;
 
        case RDMA_CM_EVENT_CONNECT_ERROR:
@@ -213,7 +213,7 @@ static int smbd_conn_upcall(
        case RDMA_CM_EVENT_REJECTED:
                log_rdma_event(ERR, "connecting failed event=%s\n", event_name);
                sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-               wake_up_interruptible(&info->conn_wait);
+               wake_up_interruptible(&info->status_wait);
                break;
 
        case RDMA_CM_EVENT_DEVICE_REMOVAL:
@@ -222,12 +222,12 @@ static int smbd_conn_upcall(
                if (sc->status == SMBDIRECT_SOCKET_NEGOTIATE_FAILED) {
                        log_rdma_event(ERR, "event=%s during negotiation\n", event_name);
                        sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-                       wake_up(&info->conn_wait);
+                       wake_up(&info->status_wait);
                        break;
                }
 
                sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-               wake_up_interruptible(&info->disconn_wait);
+               wake_up_interruptible(&info->status_wait);
                wake_up_interruptible(&sc->recv_io.reassembly.wait_queue);
                wake_up_interruptible_all(&info->wait_send_queue);
                break;
@@ -1325,7 +1325,7 @@ void smbd_destroy(struct TCP_Server_Info *server)
                rdma_disconnect(sc->rdma.cm_id);
                log_rdma_event(INFO, "wait for transport being disconnected\n");
                wait_event_interruptible(
-                       info->disconn_wait,
+                       info->status_wait,
                        sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
        }
 
@@ -1650,8 +1650,7 @@ static struct smbd_connection *_smbd_get_connection(
        log_rdma_event(INFO, "connecting to IP %pI4 port %d\n",
                &addr_in->sin_addr, port);
 
-       init_waitqueue_head(&info->conn_wait);
-       init_waitqueue_head(&info->disconn_wait);
+       init_waitqueue_head(&info->status_wait);
        init_waitqueue_head(&sc->recv_io.reassembly.wait_queue);
        rc = rdma_connect(sc->rdma.cm_id, &conn_param);
        if (rc) {
@@ -1660,7 +1659,7 @@ static struct smbd_connection *_smbd_get_connection(
        }
 
        wait_event_interruptible_timeout(
-               info->conn_wait,
+               info->status_wait,
                sc->status != SMBDIRECT_SOCKET_CONNECTING,
                msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT));
 
@@ -1717,7 +1716,7 @@ negotiation_failed:
        destroy_caches_and_workqueue(info);
        sc->status = SMBDIRECT_SOCKET_NEGOTIATE_FAILED;
        rdma_disconnect(sc->rdma.cm_id);
-       wait_event(info->conn_wait,
+       wait_event(info->status_wait,
                sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
 
 allocate_cache_failed:
index 0d4d45428c85b8d3a31b21ad92dfa323545e30aa..e45aa9ddd71da5c8e73b4c5649b2d7c8ada1cad3 100644 (file)
@@ -47,8 +47,7 @@ struct smbd_connection {
 
        int ri_rc;
        struct completion ri_done;
-       wait_queue_head_t conn_wait;
-       wait_queue_head_t disconn_wait;
+       wait_queue_head_t status_wait;
 
        struct completion negotiate_completion;
        bool negotiate_done;