- int rc;
- __u32 magic;
- __u32 peer_ip;
- int peer_port;
- int secure = (int)((long_ptr_t)arg);
-
- LASSERT (lnet_acceptor_state.pta_sock == NULL);
-
- cfs_block_allsigs();
-
- rc = lnet_sock_listen(&lnet_acceptor_state.pta_sock,
- 0, accept_port, accept_backlog);
- if (rc != 0) {
- if (rc == -EADDRINUSE)
- LCONSOLE_ERROR_MSG(0x122, "Can't start acceptor on port"
- " %d: port already in use\n",
- accept_port);
- else
- LCONSOLE_ERROR_MSG(0x123, "Can't start acceptor on port "
- "%d: unexpected error %d\n",
- accept_port, rc);
-
- lnet_acceptor_state.pta_sock = NULL;
- } else {
- LCONSOLE(0, "Accept %s, port %d\n", accept_type, accept_port);
- }
+ int rc;
+ __u32 magic;
+ __u32 peer_ip;
+ int peer_port;
+ int secure = (int)((uintptr_t)arg);
+
+ LASSERT(lnet_acceptor_state.pta_sock == NULL);
+
+ lnet_acceptor_state.pta_sock =
+ lnet_sock_listen(0, accept_port, accept_backlog,
+ lnet_acceptor_state.pta_ns);
+ if (IS_ERR(lnet_acceptor_state.pta_sock)) {
+ rc = PTR_ERR(lnet_acceptor_state.pta_sock);
+ if (rc == -EADDRINUSE)
+ LCONSOLE_ERROR_MSG(0x122, "Can't start acceptor on port"
+ " %d: port already in use\n",
+ accept_port);
+ else
+ LCONSOLE_ERROR_MSG(0x123, "Can't start acceptor on port "
+ "%d: unexpected error %d\n",
+ accept_port, rc);
+
+ lnet_acceptor_state.pta_sock = NULL;
+ } else {
+ rc = 0;
+ LCONSOLE(0, "Accept %s, port %d\n", accept_type, accept_port);
+ init_waitqueue_head(&lnet_acceptor_state.pta_waitq);
+ lnet_acceptor_state.pta_odata =
+ lnet_acceptor_state.pta_sock->sk->sk_data_ready;
+ /* ensure pta_odata gets set before there is any chance of
+ * lnet_accept_ready() trying to read it.
+ */
+ wmb();
+ lnet_acceptor_state.pta_sock->sk->sk_data_ready =
+ lnet_acceptor_ready;
+ atomic_set(&lnet_acceptor_state.pta_ready, 1);
+ }