]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client: make use of smbdirect_socket.status_wait
authorStefan Metzmacher <metze@samba.org>
Fri, 8 Aug 2025 16:48:17 +0000 (18:48 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:48 +0000 (18:29 -0500)
This will allow us to have common helper functions soon.

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
Acked-by: Namjae Jeon <linkinjeon@kernel.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 556beec3f430fdf099c9037d9b52d27b149322ef..501c515ec04f47d6a81f5faeb8c5e10c7ec5a4f9 100644 (file)
@@ -217,27 +217,27 @@ static int smbd_conn_upcall(
        case RDMA_CM_EVENT_ADDR_RESOLVED:
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RESOLVE_ADDR_RUNNING);
                sc->status = SMBDIRECT_SOCKET_RESOLVE_ROUTE_NEEDED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_ROUTE_RESOLVED:
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RESOLVE_ROUTE_RUNNING);
                sc->status = SMBDIRECT_SOCKET_RDMA_CONNECT_NEEDED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_ADDR_ERROR:
                log_rdma_event(ERR, "connecting failed event=%s\n", event_name);
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RESOLVE_ADDR_RUNNING);
                sc->status = SMBDIRECT_SOCKET_RESOLVE_ADDR_FAILED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_ROUTE_ERROR:
                log_rdma_event(ERR, "connecting failed event=%s\n", event_name);
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RESOLVE_ROUTE_RUNNING);
                sc->status = SMBDIRECT_SOCKET_RESOLVE_ROUTE_FAILED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_ESTABLISHED:
@@ -323,7 +323,7 @@ static int smbd_conn_upcall(
 
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RDMA_CONNECT_RUNNING);
                sc->status = SMBDIRECT_SOCKET_NEGOTIATE_NEEDED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_CONNECT_ERROR:
@@ -332,7 +332,7 @@ static int smbd_conn_upcall(
                log_rdma_event(ERR, "connecting failed event=%s\n", event_name);
                WARN_ON_ONCE(sc->status != SMBDIRECT_SOCKET_RDMA_CONNECT_RUNNING);
                sc->status = SMBDIRECT_SOCKET_RDMA_CONNECT_FAILED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                break;
 
        case RDMA_CM_EVENT_DEVICE_REMOVAL:
@@ -341,12 +341,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->status_wait);
+                       wake_up(&sc->status_wait);
                        break;
                }
 
                sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                wake_up_interruptible(&sc->recv_io.reassembly.wait_queue);
                wake_up_interruptible_all(&info->wait_send_queue);
                break;
@@ -610,7 +610,7 @@ static void recv_done(struct ib_cq *cq, struct ib_wc *wc)
                else
                        sc->status = SMBDIRECT_SOCKET_CONNECTED;
 
-               wake_up_interruptible(&info->status_wait);
+               wake_up_interruptible(&sc->status_wait);
                return;
 
        /* SMBD data transfer packet */
@@ -729,7 +729,7 @@ static struct rdma_cm_id *smbd_create_id(
                goto out;
        }
        rc = wait_event_interruptible_timeout(
-               info->status_wait,
+               sc->status_wait,
                sc->status != SMBDIRECT_SOCKET_RESOLVE_ADDR_RUNNING,
                msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT));
        /* e.g. if interrupted returns -ERESTARTSYS */
@@ -756,7 +756,7 @@ static struct rdma_cm_id *smbd_create_id(
                goto out;
        }
        rc = wait_event_interruptible_timeout(
-               info->status_wait,
+               sc->status_wait,
                sc->status != SMBDIRECT_SOCKET_RESOLVE_ROUTE_RUNNING,
                msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT));
        /* e.g. if interrupted returns -ERESTARTSYS */
@@ -1265,7 +1265,7 @@ static int smbd_negotiate(struct smbd_connection *info)
                return rc;
 
        rc = wait_event_interruptible_timeout(
-               info->status_wait,
+               sc->status_wait,
                sc->status != SMBDIRECT_SOCKET_NEGOTIATE_RUNNING,
                secs_to_jiffies(SMBD_NEGOTIATE_TIMEOUT));
        log_rdma_event(INFO, "wait_event_interruptible_timeout rc=%d\n", rc);
@@ -1492,7 +1492,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->status_wait,
+                       sc->status_wait,
                        sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
        }
 
@@ -1709,7 +1709,7 @@ static struct smbd_connection *_smbd_get_connection(
        info->initiator_depth = 1;
        info->responder_resources = SMBD_CM_RESPONDER_RESOURCES;
 
-       init_waitqueue_head(&info->status_wait);
+       init_waitqueue_head(&sc->status_wait);
 
        sc->status = SMBDIRECT_SOCKET_CREATED;
        rc = smbd_ia_open(info, dstaddr, port);
@@ -1832,7 +1832,7 @@ static struct smbd_connection *_smbd_get_connection(
        }
 
        wait_event_interruptible_timeout(
-               info->status_wait,
+               sc->status_wait,
                sc->status != SMBDIRECT_SOCKET_RDMA_CONNECT_RUNNING,
                msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT));
 
@@ -1889,7 +1889,7 @@ negotiation_failed:
        destroy_caches_and_workqueue(info);
        sc->status = SMBDIRECT_SOCKET_NEGOTIATE_FAILED;
        rdma_disconnect(sc->rdma.cm_id);
-       wait_event(info->status_wait,
+       wait_event(sc->status_wait,
                sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
 
 allocate_cache_failed:
index 82b1d936e80084038dac1eaa44b834391ee1ca15..f250241d2d24bbd0c6d513cb5d51fce68f431639 100644 (file)
@@ -45,8 +45,6 @@ enum keep_alive_status {
 struct smbd_connection {
        struct smbdirect_socket socket;
 
-       wait_queue_head_t status_wait;
-
        struct work_struct disconnect_work;
        struct work_struct post_send_credits_work;