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

Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
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/server/transport_rdma.c

index 6c34a271ae849d1ddbbfdb36b4dd833b5b672fe5..a338f9496deaf63b5d57cc59668855289c5507c7 100644 (file)
@@ -92,8 +92,6 @@ struct smb_direct_transport {
 
        struct smbdirect_socket socket;
 
-       wait_queue_head_t       wait_status;
-
        spinlock_t              receive_credit_lock;
        int                     recv_credits;
        int                     recv_credit_target;
@@ -307,7 +305,7 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
        spin_lock_init(&sc->recv_io.free.lock);
 
        sc->status = SMBDIRECT_SOCKET_CREATED;
-       init_waitqueue_head(&t->wait_status);
+       init_waitqueue_head(&sc->status_wait);
 
        spin_lock_init(&sc->recv_io.reassembly.lock);
        INIT_LIST_HEAD(&sc->recv_io.reassembly.list);
@@ -518,7 +516,7 @@ static void recv_done(struct ib_cq *cq, struct ib_wc *wc)
                sc->recv_io.reassembly.full_packet_received = true;
                sc->status = SMBDIRECT_SOCKET_CONNECTED;
                enqueue_reassembly(t, recvmsg, 0);
-               wake_up(&t->wait_status);
+               wake_up(&sc->status_wait);
                return;
        case SMBDIRECT_EXPECT_DATA_TRANSFER: {
                struct smbdirect_data_transfer *data_transfer =
@@ -1522,7 +1520,7 @@ static void smb_direct_disconnect(struct ksmbd_transport *t)
        ksmbd_debug(RDMA, "Disconnecting cm_id=%p\n", sc->rdma.cm_id);
 
        smb_direct_disconnect_rdma_work(&st->disconnect_work);
-       wait_event_interruptible(st->wait_status,
+       wait_event_interruptible(sc->status_wait,
                                 sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
        free_transport(st);
 }
@@ -1549,7 +1547,7 @@ static int smb_direct_cm_handler(struct rdma_cm_id *cm_id,
        switch (event->event) {
        case RDMA_CM_EVENT_ESTABLISHED: {
                sc->status = SMBDIRECT_SOCKET_CONNECTED;
-               wake_up(&t->wait_status);
+               wake_up(&sc->status_wait);
                break;
        }
        case RDMA_CM_EVENT_DEVICE_REMOVAL:
@@ -1557,14 +1555,14 @@ static int smb_direct_cm_handler(struct rdma_cm_id *cm_id,
                ib_drain_qp(sc->ib.qp);
 
                sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-               wake_up_all(&t->wait_status);
+               wake_up_all(&sc->status_wait);
                wake_up_all(&sc->recv_io.reassembly.wait_queue);
                wake_up_all(&t->wait_send_credits);
                break;
        }
        case RDMA_CM_EVENT_CONNECT_ERROR: {
                sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
-               wake_up_all(&t->wait_status);
+               wake_up_all(&sc->status_wait);
                break;
        }
        default:
@@ -1997,7 +1995,7 @@ static int smb_direct_prepare(struct ksmbd_transport *t)
        int ret;
 
        ksmbd_debug(RDMA, "Waiting for SMB_DIRECT negotiate request\n");
-       ret = wait_event_interruptible_timeout(st->wait_status,
+       ret = wait_event_interruptible_timeout(sc->status_wait,
                                               st->negotiation_requested ||
                                               sc->status == SMBDIRECT_SOCKET_DISCONNECTED,
                                               SMB_DIRECT_NEGOTIATE_TIMEOUT * HZ);