diff options
| author | Stefan Metzmacher <metze@samba.org> | 2025-08-08 18:48:17 +0200 |
|---|---|---|
| committer | Steve French <stfrench@microsoft.com> | 2025-09-28 18:29:48 -0500 |
| commit | d9140ef074239408a1d991819811fadbbe781c79 (patch) | |
| tree | deb7a29a3acf22149535f1124e6f538eed9c2a02 | |
| parent | 4ff3fa4e4aa78c3aa9083a8d448f8af4f0740df7 (diff) | |
smb: client: make use of smbdirect_socket.status_wait
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>
| -rw-r--r-- | fs/smb/client/smbdirect.c | 32 | ||||
| -rw-r--r-- | fs/smb/client/smbdirect.h | 2 |
2 files changed, 16 insertions, 18 deletions
diff --git a/fs/smb/client/smbdirect.c b/fs/smb/client/smbdirect.c index 556beec3f430..501c515ec04f 100644 --- a/fs/smb/client/smbdirect.c +++ b/fs/smb/client/smbdirect.c @@ -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: diff --git a/fs/smb/client/smbdirect.h b/fs/smb/client/smbdirect.h index 82b1d936e800..f250241d2d24 100644 --- a/fs/smb/client/smbdirect.h +++ b/fs/smb/client/smbdirect.h @@ -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; |
