mirror of https://github.com/torvalds/linux.git
smb: client: only use a single wait_queue to monitor smbdirect connection status
There's no need for separate conn_wait and disconn_wait queues. This will simplify the move to common code, the server code already a single wait_queue for this. 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 Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
550a194c59
commit
dfe6f14aed
|
|
@ -205,7 +205,7 @@ static int smbd_conn_upcall(
|
|||
case RDMA_CM_EVENT_ESTABLISHED:
|
||||
log_rdma_event(INFO, "connected event=%s\n", event_name);
|
||||
sc->status = SMBDIRECT_SOCKET_CONNECTED;
|
||||
wake_up_interruptible(&info->conn_wait);
|
||||
wake_up_interruptible(&info->status_wait);
|
||||
break;
|
||||
|
||||
case RDMA_CM_EVENT_CONNECT_ERROR:
|
||||
|
|
@ -213,7 +213,7 @@ static int smbd_conn_upcall(
|
|||
case RDMA_CM_EVENT_REJECTED:
|
||||
log_rdma_event(ERR, "connecting failed event=%s\n", event_name);
|
||||
sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
|
||||
wake_up_interruptible(&info->conn_wait);
|
||||
wake_up_interruptible(&info->status_wait);
|
||||
break;
|
||||
|
||||
case RDMA_CM_EVENT_DEVICE_REMOVAL:
|
||||
|
|
@ -222,12 +222,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->conn_wait);
|
||||
wake_up(&info->status_wait);
|
||||
break;
|
||||
}
|
||||
|
||||
sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
|
||||
wake_up_interruptible(&info->disconn_wait);
|
||||
wake_up_interruptible(&info->status_wait);
|
||||
wake_up_interruptible(&sc->recv_io.reassembly.wait_queue);
|
||||
wake_up_interruptible_all(&info->wait_send_queue);
|
||||
break;
|
||||
|
|
@ -1325,7 +1325,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->disconn_wait,
|
||||
info->status_wait,
|
||||
sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
|
||||
}
|
||||
|
||||
|
|
@ -1650,8 +1650,7 @@ static struct smbd_connection *_smbd_get_connection(
|
|||
log_rdma_event(INFO, "connecting to IP %pI4 port %d\n",
|
||||
&addr_in->sin_addr, port);
|
||||
|
||||
init_waitqueue_head(&info->conn_wait);
|
||||
init_waitqueue_head(&info->disconn_wait);
|
||||
init_waitqueue_head(&info->status_wait);
|
||||
init_waitqueue_head(&sc->recv_io.reassembly.wait_queue);
|
||||
rc = rdma_connect(sc->rdma.cm_id, &conn_param);
|
||||
if (rc) {
|
||||
|
|
@ -1660,7 +1659,7 @@ static struct smbd_connection *_smbd_get_connection(
|
|||
}
|
||||
|
||||
wait_event_interruptible_timeout(
|
||||
info->conn_wait,
|
||||
info->status_wait,
|
||||
sc->status != SMBDIRECT_SOCKET_CONNECTING,
|
||||
msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT));
|
||||
|
||||
|
|
@ -1717,7 +1716,7 @@ static struct smbd_connection *_smbd_get_connection(
|
|||
destroy_caches_and_workqueue(info);
|
||||
sc->status = SMBDIRECT_SOCKET_NEGOTIATE_FAILED;
|
||||
rdma_disconnect(sc->rdma.cm_id);
|
||||
wait_event(info->conn_wait,
|
||||
wait_event(info->status_wait,
|
||||
sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
|
||||
|
||||
allocate_cache_failed:
|
||||
|
|
|
|||
|
|
@ -47,8 +47,7 @@ struct smbd_connection {
|
|||
|
||||
int ri_rc;
|
||||
struct completion ri_done;
|
||||
wait_queue_head_t conn_wait;
|
||||
wait_queue_head_t disconn_wait;
|
||||
wait_queue_head_t status_wait;
|
||||
|
||||
struct completion negotiate_completion;
|
||||
bool negotiate_done;
|
||||
|
|
|
|||
Loading…
Reference in New Issue