diff options
| author | Stefan Metzmacher <metze@samba.org> | 2025-08-07 11:20:55 +0200 |
|---|---|---|
| committer | Steve French <stfrench@microsoft.com> | 2025-09-28 18:29:52 -0500 |
| commit | c82a53211a378e70866aac8ec49f4df64905ccc2 (patch) | |
| tree | 982a11d61bd65c4a81f9c70cfe89aef29952076c | |
| parent | smb: server: queue post_recv_credits_work in put_recvmsg() and avoid count_av... (diff) | |
| download | linux-c82a53211a378e70866aac8ec49f4df64905ccc2.tar.gz linux-c82a53211a378e70866aac8ec49f4df64905ccc2.zip | |
smb: server: make use of smbdirect_socket.status_wait
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>
| -rw-r--r-- | fs/smb/server/transport_rdma.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/smb/server/transport_rdma.c b/fs/smb/server/transport_rdma.c index 6c34a271ae84..a338f9496dea 100644 --- a/fs/smb/server/transport_rdma.c +++ b/fs/smb/server/transport_rdma.c @@ -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); |
