aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2025-08-07 11:20:55 +0200
committerSteve French <stfrench@microsoft.com>2025-09-28 18:29:52 -0500
commitc82a53211a378e70866aac8ec49f4df64905ccc2 (patch)
tree982a11d61bd65c4a81f9c70cfe89aef29952076c
parentsmb: server: queue post_recv_credits_work in put_recvmsg() and avoid count_av... (diff)
downloadlinux-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.c16
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);