Lines Matching refs:xprt

54 static void xs_close(struct rpc_xprt *xprt);
224 static inline struct sockaddr *xs_addr(struct rpc_xprt *xprt) in xs_addr() argument
226 return (struct sockaddr *) &xprt->addr; in xs_addr()
229 static inline struct sockaddr_un *xs_addr_un(struct rpc_xprt *xprt) in xs_addr_un() argument
231 return (struct sockaddr_un *) &xprt->addr; in xs_addr_un()
234 static inline struct sockaddr_in *xs_addr_in(struct rpc_xprt *xprt) in xs_addr_in() argument
236 return (struct sockaddr_in *) &xprt->addr; in xs_addr_in()
239 static inline struct sockaddr_in6 *xs_addr_in6(struct rpc_xprt *xprt) in xs_addr_in6() argument
241 return (struct sockaddr_in6 *) &xprt->addr; in xs_addr_in6()
244 static void xs_format_common_peer_addresses(struct rpc_xprt *xprt) in xs_format_common_peer_addresses() argument
246 struct sockaddr *sap = xs_addr(xprt); in xs_format_common_peer_addresses()
254 sun = xs_addr_un(xprt); in xs_format_common_peer_addresses()
256 xprt->address_strings[RPC_DISPLAY_ADDR] = in xs_format_common_peer_addresses()
261 xprt->address_strings[RPC_DISPLAY_ADDR] = in xs_format_common_peer_addresses()
263 sin = xs_addr_in(xprt); in xs_format_common_peer_addresses()
268 xprt->address_strings[RPC_DISPLAY_ADDR] = in xs_format_common_peer_addresses()
270 sin6 = xs_addr_in6(xprt); in xs_format_common_peer_addresses()
277 xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL); in xs_format_common_peer_addresses()
280 static void xs_format_common_peer_ports(struct rpc_xprt *xprt) in xs_format_common_peer_ports() argument
282 struct sockaddr *sap = xs_addr(xprt); in xs_format_common_peer_ports()
286 xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL); in xs_format_common_peer_ports()
289 xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL); in xs_format_common_peer_ports()
292 static void xs_format_peer_addresses(struct rpc_xprt *xprt, in xs_format_peer_addresses() argument
296 xprt->address_strings[RPC_DISPLAY_PROTO] = protocol; in xs_format_peer_addresses()
297 xprt->address_strings[RPC_DISPLAY_NETID] = netid; in xs_format_peer_addresses()
298 xs_format_common_peer_addresses(xprt); in xs_format_peer_addresses()
299 xs_format_common_peer_ports(xprt); in xs_format_peer_addresses()
302 static void xs_update_peer_port(struct rpc_xprt *xprt) in xs_update_peer_port() argument
304 kfree(xprt->address_strings[RPC_DISPLAY_HEX_PORT]); in xs_update_peer_port()
305 kfree(xprt->address_strings[RPC_DISPLAY_PORT]); in xs_update_peer_port()
307 xs_format_common_peer_ports(xprt); in xs_update_peer_port()
310 static void xs_free_peer_addresses(struct rpc_xprt *xprt) in xs_free_peer_addresses() argument
320 kfree(xprt->address_strings[i]); in xs_free_peer_addresses()
440 struct sock_xprt *transport = container_of(task->tk_rqstp->rq_xprt, struct sock_xprt, xprt); in xs_nospace_callback()
454 struct rpc_xprt *xprt = req->rq_xprt; in xs_nospace() local
455 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_nospace()
464 spin_lock_bh(&xprt->transport_lock); in xs_nospace()
467 if (xprt_connected(xprt)) { in xs_nospace()
483 spin_unlock_bh(&xprt->transport_lock); in xs_nospace()
514 struct rpc_xprt *xprt = req->rq_xprt; in xs_local_send_request() local
516 container_of(xprt, struct sock_xprt, xprt); in xs_local_send_request()
549 xs_close(xprt); in xs_local_send_request()
570 struct rpc_xprt *xprt = req->rq_xprt; in xs_udp_send_request() local
571 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_udp_send_request()
580 if (!xprt_bound(xprt)) in xs_udp_send_request()
582 status = xs_sendpages(transport->sock, xs_addr(xprt), xprt->addrlen, in xs_udp_send_request()
632 static void xs_tcp_shutdown(struct rpc_xprt *xprt) in xs_tcp_shutdown() argument
634 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_shutdown()
639 trace_rpc_socket_shutdown(xprt, sock); in xs_tcp_shutdown()
660 struct rpc_xprt *xprt = req->rq_xprt; in xs_tcp_send_request() local
661 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_send_request()
740 static void xs_tcp_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task) in xs_tcp_release_xprt() argument
744 if (task != xprt->snd_task) in xs_tcp_release_xprt()
755 set_bit(XPRT_CLOSE_WAIT, &xprt->state); in xs_tcp_release_xprt()
757 xprt_release_xprt(xprt, task); in xs_tcp_release_xprt()
776 static void xs_sock_reset_connection_flags(struct rpc_xprt *xprt) in xs_sock_reset_connection_flags() argument
779 clear_bit(XPRT_CLOSE_WAIT, &xprt->state); in xs_sock_reset_connection_flags()
780 clear_bit(XPRT_CLOSING, &xprt->state); in xs_sock_reset_connection_flags()
784 static void xs_sock_mark_closed(struct rpc_xprt *xprt) in xs_sock_mark_closed() argument
786 xs_sock_reset_connection_flags(xprt); in xs_sock_mark_closed()
788 xprt_disconnect_done(xprt); in xs_sock_mark_closed()
800 struct rpc_xprt *xprt; in xs_error_report() local
804 if (!(xprt = xprt_from_sock(sk))) in xs_error_report()
812 xs_sock_mark_closed(xprt); in xs_error_report()
814 xprt, -err); in xs_error_report()
815 trace_rpc_socket_error(xprt, sk->sk_socket, err); in xs_error_report()
816 xprt_wake_pending_tasks(xprt, err); in xs_error_report()
825 struct rpc_xprt *xprt = &transport->xprt; in xs_reset_transport() local
837 xprt_clear_connected(xprt); in xs_reset_transport()
839 xs_sock_reset_connection_flags(xprt); in xs_reset_transport()
841 trace_rpc_socket_close(xprt, sock); in xs_reset_transport()
855 static void xs_close(struct rpc_xprt *xprt) in xs_close() argument
857 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_close()
859 dprintk("RPC: xs_close xprt %p\n", xprt); in xs_close()
862 xprt->reestablish_timeout = 0; in xs_close()
864 xprt_disconnect_done(xprt); in xs_close()
867 static void xs_xprt_free(struct rpc_xprt *xprt) in xs_xprt_free() argument
869 xs_free_peer_addresses(xprt); in xs_xprt_free()
870 xprt_free(xprt); in xs_xprt_free()
878 static void xs_destroy(struct rpc_xprt *xprt) in xs_destroy() argument
880 dprintk("RPC: xs_destroy xprt %p\n", xprt); in xs_destroy()
882 xs_close(xprt); in xs_destroy()
883 xs_xprt_free(xprt); in xs_destroy()
912 struct rpc_xprt *xprt; in xs_local_data_ready() local
921 xprt = xprt_from_sock(sk); in xs_local_data_ready()
922 if (xprt == NULL) in xs_local_data_ready()
941 spin_lock(&xprt->transport_lock); in xs_local_data_ready()
942 rovr = xprt_lookup_rqst(xprt, *xp); in xs_local_data_ready()
959 spin_unlock(&xprt->transport_lock); in xs_local_data_ready()
975 struct rpc_xprt *xprt; in xs_udp_data_ready() local
984 if (!(xprt = xprt_from_sock(sk))) in xs_udp_data_ready()
1003 spin_lock(&xprt->transport_lock); in xs_udp_data_ready()
1004 rovr = xprt_lookup_rqst(xprt, *xp); in xs_udp_data_ready()
1020 xprt_adjust_cwnd(xprt, task, copied); in xs_udp_data_ready()
1024 spin_unlock(&xprt->transport_lock); in xs_udp_data_ready()
1035 static void xs_tcp_force_close(struct rpc_xprt *xprt) in xs_tcp_force_close() argument
1037 xprt_force_disconnect(xprt); in xs_tcp_force_close()
1040 static inline void xs_tcp_read_fraghdr(struct rpc_xprt *xprt, struct xdr_skb_reader *desc) in xs_tcp_read_fraghdr() argument
1042 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_read_fraghdr()
1066 xs_tcp_force_close(xprt); in xs_tcp_read_fraghdr()
1147 xs_tcp_force_close(&transport->xprt); in xs_tcp_read_calldir()
1152 static inline void xs_tcp_read_common(struct rpc_xprt *xprt, in xs_tcp_read_common() argument
1157 container_of(xprt, struct sock_xprt, xprt); in xs_tcp_read_common()
1209 xprt, transport->tcp_copied, in xs_tcp_read_common()
1217 "tcp_reclen = %u\n", xprt, transport->tcp_copied, in xs_tcp_read_common()
1232 static inline int xs_tcp_read_reply(struct rpc_xprt *xprt, in xs_tcp_read_reply() argument
1236 container_of(xprt, struct sock_xprt, xprt); in xs_tcp_read_reply()
1242 spin_lock(&xprt->transport_lock); in xs_tcp_read_reply()
1243 req = xprt_lookup_rqst(xprt, transport->tcp_xid); in xs_tcp_read_reply()
1247 spin_unlock(&xprt->transport_lock); in xs_tcp_read_reply()
1251 xs_tcp_read_common(xprt, desc, req); in xs_tcp_read_reply()
1256 spin_unlock(&xprt->transport_lock); in xs_tcp_read_reply()
1268 static int xs_tcp_read_callback(struct rpc_xprt *xprt, in xs_tcp_read_callback() argument
1272 container_of(xprt, struct sock_xprt, xprt); in xs_tcp_read_callback()
1276 spin_lock(&xprt->transport_lock); in xs_tcp_read_callback()
1277 req = xprt_lookup_bc_request(xprt, transport->tcp_xid); in xs_tcp_read_callback()
1279 spin_unlock(&xprt->transport_lock); in xs_tcp_read_callback()
1281 xprt_force_disconnect(xprt); in xs_tcp_read_callback()
1286 xs_tcp_read_common(xprt, desc, req); in xs_tcp_read_callback()
1290 spin_unlock(&xprt->transport_lock); in xs_tcp_read_callback()
1295 static inline int _xs_tcp_read_data(struct rpc_xprt *xprt, in _xs_tcp_read_data() argument
1299 container_of(xprt, struct sock_xprt, xprt); in _xs_tcp_read_data()
1302 xs_tcp_read_reply(xprt, desc) : in _xs_tcp_read_data()
1303 xs_tcp_read_callback(xprt, desc); in _xs_tcp_read_data()
1306 static inline int _xs_tcp_read_data(struct rpc_xprt *xprt, in _xs_tcp_read_data() argument
1309 return xs_tcp_read_reply(xprt, desc); in _xs_tcp_read_data()
1317 static void xs_tcp_read_data(struct rpc_xprt *xprt, in xs_tcp_read_data() argument
1321 container_of(xprt, struct sock_xprt, xprt); in xs_tcp_read_data()
1323 if (_xs_tcp_read_data(xprt, desc) == 0) in xs_tcp_read_data()
1350 struct rpc_xprt *xprt = rd_desc->arg.data; in xs_tcp_data_recv() local
1351 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_data_recv()
1364 xs_tcp_read_fraghdr(xprt, &desc); in xs_tcp_data_recv()
1379 xs_tcp_read_data(xprt, &desc); in xs_tcp_data_recv()
1398 struct rpc_xprt *xprt; in xs_tcp_data_ready() local
1406 if (!(xprt = xprt_from_sock(sk))) { in xs_tcp_data_ready()
1413 if (xprt->reestablish_timeout) in xs_tcp_data_ready()
1414 xprt->reestablish_timeout = 0; in xs_tcp_data_ready()
1417 rd_desc.arg.data = xprt; in xs_tcp_data_ready()
1425 trace_xs_tcp_data_ready(xprt, read, total); in xs_tcp_data_ready()
1436 struct rpc_xprt *xprt; in xs_tcp_state_change() local
1440 if (!(xprt = xprt_from_sock(sk))) in xs_tcp_state_change()
1442 dprintk("RPC: xs_tcp_state_change client %p...\n", xprt); in xs_tcp_state_change()
1444 sk->sk_state, xprt_connected(xprt), in xs_tcp_state_change()
1449 transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_state_change()
1450 trace_rpc_socket_state_change(xprt, sk->sk_socket); in xs_tcp_state_change()
1453 spin_lock(&xprt->transport_lock); in xs_tcp_state_change()
1454 if (!xprt_test_and_set_connected(xprt)) { in xs_tcp_state_change()
1462 xprt->connect_cookie++; in xs_tcp_state_change()
1464 xprt_clear_connecting(xprt); in xs_tcp_state_change()
1466 xprt_wake_pending_tasks(xprt, -EAGAIN); in xs_tcp_state_change()
1468 spin_unlock(&xprt->transport_lock); in xs_tcp_state_change()
1472 xprt->connect_cookie++; in xs_tcp_state_change()
1473 xprt->reestablish_timeout = 0; in xs_tcp_state_change()
1474 set_bit(XPRT_CLOSING, &xprt->state); in xs_tcp_state_change()
1476 clear_bit(XPRT_CONNECTED, &xprt->state); in xs_tcp_state_change()
1477 clear_bit(XPRT_CLOSE_WAIT, &xprt->state); in xs_tcp_state_change()
1482 xprt->connect_cookie++; in xs_tcp_state_change()
1483 clear_bit(XPRT_CONNECTED, &xprt->state); in xs_tcp_state_change()
1484 xs_tcp_force_close(xprt); in xs_tcp_state_change()
1490 if (xprt->reestablish_timeout < XS_TCP_INIT_REEST_TO) in xs_tcp_state_change()
1491 xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO; in xs_tcp_state_change()
1494 set_bit(XPRT_CLOSING, &xprt->state); in xs_tcp_state_change()
1496 clear_bit(XPRT_CONNECTED, &xprt->state); in xs_tcp_state_change()
1502 xprt_clear_connecting(xprt); in xs_tcp_state_change()
1503 xs_sock_mark_closed(xprt); in xs_tcp_state_change()
1512 struct rpc_xprt *xprt; in xs_write_space() local
1518 if (unlikely(!(xprt = xprt_from_sock(sk)))) in xs_write_space()
1523 xprt_write_space(xprt); in xs_write_space()
1568 static void xs_udp_do_set_buffer_size(struct rpc_xprt *xprt) in xs_udp_do_set_buffer_size() argument
1570 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_udp_do_set_buffer_size()
1575 sk->sk_rcvbuf = transport->rcvsize * xprt->max_reqs * 2; in xs_udp_do_set_buffer_size()
1579 sk->sk_sndbuf = transport->sndsize * xprt->max_reqs * 2; in xs_udp_do_set_buffer_size()
1592 static void xs_udp_set_buffer_size(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize) in xs_udp_set_buffer_size() argument
1594 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_udp_set_buffer_size()
1603 xs_udp_do_set_buffer_size(xprt); in xs_udp_set_buffer_size()
1612 static void xs_udp_timer(struct rpc_xprt *xprt, struct rpc_task *task) in xs_udp_timer() argument
1614 xprt_adjust_cwnd(xprt, task, -ETIMEDOUT); in xs_udp_timer()
1664 static void xs_set_port(struct rpc_xprt *xprt, unsigned short port) in xs_set_port() argument
1666 dprintk("RPC: setting port for xprt %p to %u\n", xprt, port); in xs_set_port()
1668 rpc_set_port(xs_addr(xprt), port); in xs_set_port()
1669 xs_update_peer_port(xprt); in xs_set_port()
1682 if (port == 0 && transport->xprt.resvport) in xs_get_srcport()
1691 if (!transport->xprt.resvport) in xs_next_srcport()
1722 memcpy(&myaddr, &transport->srcaddr, transport->xprt.addrlen); in xs_bind()
1726 transport->xprt.addrlen); in xs_bind()
1758 static void xs_local_set_port(struct rpc_xprt *xprt, unsigned short port) in xs_local_set_port() argument
1830 static struct socket *xs_create_sock(struct rpc_xprt *xprt, in xs_create_sock() argument
1837 err = __sock_create(xprt->xprt_net, family, type, protocol, &sock, 1); in xs_create_sock()
1859 static int xs_local_finish_connecting(struct rpc_xprt *xprt, in xs_local_finish_connecting() argument
1862 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, in xs_local_finish_connecting()
1863 xprt); in xs_local_finish_connecting()
1872 sk->sk_user_data = xprt; in xs_local_finish_connecting()
1878 xprt_clear_connected(xprt); in xs_local_finish_connecting()
1888 xprt->stat.connect_count++; in xs_local_finish_connecting()
1889 xprt->stat.connect_start = jiffies; in xs_local_finish_connecting()
1890 return kernel_connect(sock, xs_addr(xprt), xprt->addrlen, 0); in xs_local_finish_connecting()
1901 struct rpc_xprt *xprt = &transport->xprt; in xs_local_setup_socket() local
1905 status = __sock_create(xprt->xprt_net, AF_LOCAL, in xs_local_setup_socket()
1915 xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_local_setup_socket()
1917 status = xs_local_finish_connecting(xprt, sock); in xs_local_setup_socket()
1918 trace_rpc_socket_connect(xprt, sock, status); in xs_local_setup_socket()
1922 xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_local_setup_socket()
1923 xprt_set_connected(xprt); in xs_local_setup_socket()
1928 xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_local_setup_socket()
1932 xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_local_setup_socket()
1937 xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_local_setup_socket()
1941 xprt_clear_connecting(xprt); in xs_local_setup_socket()
1942 xprt_wake_pending_tasks(xprt, status); in xs_local_setup_socket()
1946 static void xs_local_connect(struct rpc_xprt *xprt, struct rpc_task *task) in xs_local_connect() argument
1948 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_local_connect()
1970 static void xs_set_memalloc(struct rpc_xprt *xprt) in xs_set_memalloc() argument
1972 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, in xs_set_memalloc()
1973 xprt); in xs_set_memalloc()
1975 if (xprt->swapper) in xs_set_memalloc()
1985 int xs_swapper(struct rpc_xprt *xprt, int enable) in xs_swapper() argument
1987 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, in xs_swapper()
1988 xprt); in xs_swapper()
1992 xprt->swapper++; in xs_swapper()
1993 xs_set_memalloc(xprt); in xs_swapper()
1994 } else if (xprt->swapper) { in xs_swapper()
1995 xprt->swapper--; in xs_swapper()
2003 static void xs_set_memalloc(struct rpc_xprt *xprt) in xs_set_memalloc() argument
2008 static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock) in xs_udp_finish_connecting() argument
2010 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_udp_finish_connecting()
2019 sk->sk_user_data = xprt; in xs_udp_finish_connecting()
2024 xprt_set_connected(xprt); in xs_udp_finish_connecting()
2030 xs_set_memalloc(xprt); in xs_udp_finish_connecting()
2034 xs_udp_do_set_buffer_size(xprt); in xs_udp_finish_connecting()
2041 struct rpc_xprt *xprt = &transport->xprt; in xs_udp_setup_socket() local
2045 sock = xs_create_sock(xprt, transport, in xs_udp_setup_socket()
2046 xs_addr(xprt)->sa_family, SOCK_DGRAM, in xs_udp_setup_socket()
2052 "%s (port %s)\n", xprt, in xs_udp_setup_socket()
2053 xprt->address_strings[RPC_DISPLAY_PROTO], in xs_udp_setup_socket()
2054 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_udp_setup_socket()
2055 xprt->address_strings[RPC_DISPLAY_PORT]); in xs_udp_setup_socket()
2057 xs_udp_finish_connecting(xprt, sock); in xs_udp_setup_socket()
2058 trace_rpc_socket_connect(xprt, sock, 0); in xs_udp_setup_socket()
2061 xprt_unlock_connect(xprt, transport); in xs_udp_setup_socket()
2062 xprt_clear_connecting(xprt); in xs_udp_setup_socket()
2063 xprt_wake_pending_tasks(xprt, status); in xs_udp_setup_socket()
2066 static int xs_tcp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock) in xs_tcp_finish_connecting() argument
2068 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_finish_connecting()
2073 unsigned int keepidle = xprt->timeout->to_initval / HZ; in xs_tcp_finish_connecting()
2074 unsigned int keepcnt = xprt->timeout->to_retries + 1; in xs_tcp_finish_connecting()
2091 sk->sk_user_data = xprt; in xs_tcp_finish_connecting()
2102 xprt_clear_connected(xprt); in xs_tcp_finish_connecting()
2111 if (!xprt_bound(xprt)) in xs_tcp_finish_connecting()
2114 xs_set_memalloc(xprt); in xs_tcp_finish_connecting()
2117 xprt->stat.connect_count++; in xs_tcp_finish_connecting()
2118 xprt->stat.connect_start = jiffies; in xs_tcp_finish_connecting()
2120 ret = kernel_connect(sock, xs_addr(xprt), xprt->addrlen, O_NONBLOCK); in xs_tcp_finish_connecting()
2126 if (xprt->reestablish_timeout < XS_TCP_INIT_REEST_TO) in xs_tcp_finish_connecting()
2127 xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO; in xs_tcp_finish_connecting()
2146 struct rpc_xprt *xprt = &transport->xprt; in xs_tcp_setup_socket() local
2150 sock = xs_create_sock(xprt, transport, in xs_tcp_setup_socket()
2151 xs_addr(xprt)->sa_family, SOCK_STREAM, in xs_tcp_setup_socket()
2160 "%s (port %s)\n", xprt, in xs_tcp_setup_socket()
2161 xprt->address_strings[RPC_DISPLAY_PROTO], in xs_tcp_setup_socket()
2162 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_tcp_setup_socket()
2163 xprt->address_strings[RPC_DISPLAY_PORT]); in xs_tcp_setup_socket()
2165 status = xs_tcp_finish_connecting(xprt, sock); in xs_tcp_setup_socket()
2166 trace_rpc_socket_connect(xprt, sock, status); in xs_tcp_setup_socket()
2168 xprt, -status, xprt_connected(xprt), in xs_tcp_setup_socket()
2178 xs_tcp_force_close(xprt); in xs_tcp_setup_socket()
2183 xprt_unlock_connect(xprt, transport); in xs_tcp_setup_socket()
2195 xs_tcp_force_close(xprt); in xs_tcp_setup_socket()
2200 xprt_unlock_connect(xprt, transport); in xs_tcp_setup_socket()
2201 xprt_clear_connecting(xprt); in xs_tcp_setup_socket()
2202 xprt_wake_pending_tasks(xprt, status); in xs_tcp_setup_socket()
2219 static void xs_connect(struct rpc_xprt *xprt, struct rpc_task *task) in xs_connect() argument
2221 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_connect()
2223 WARN_ON_ONCE(!xprt_lock_connect(xprt, task, transport)); in xs_connect()
2228 xprt, xprt->reestablish_timeout / HZ); in xs_connect()
2235 xprt->reestablish_timeout); in xs_connect()
2236 xprt->reestablish_timeout <<= 1; in xs_connect()
2237 if (xprt->reestablish_timeout < XS_TCP_INIT_REEST_TO) in xs_connect()
2238 xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO; in xs_connect()
2239 if (xprt->reestablish_timeout > XS_TCP_MAX_REEST_TO) in xs_connect()
2240 xprt->reestablish_timeout = XS_TCP_MAX_REEST_TO; in xs_connect()
2242 dprintk("RPC: xs_connect scheduled xprt %p\n", xprt); in xs_connect()
2254 static void xs_local_print_stats(struct rpc_xprt *xprt, struct seq_file *seq) in xs_local_print_stats() argument
2258 if (xprt_connected(xprt)) in xs_local_print_stats()
2259 idle_time = (long)(jiffies - xprt->last_used) / HZ; in xs_local_print_stats()
2263 xprt->stat.bind_count, in xs_local_print_stats()
2264 xprt->stat.connect_count, in xs_local_print_stats()
2265 xprt->stat.connect_time, in xs_local_print_stats()
2267 xprt->stat.sends, in xs_local_print_stats()
2268 xprt->stat.recvs, in xs_local_print_stats()
2269 xprt->stat.bad_xids, in xs_local_print_stats()
2270 xprt->stat.req_u, in xs_local_print_stats()
2271 xprt->stat.bklog_u, in xs_local_print_stats()
2272 xprt->stat.max_slots, in xs_local_print_stats()
2273 xprt->stat.sending_u, in xs_local_print_stats()
2274 xprt->stat.pending_u); in xs_local_print_stats()
2283 static void xs_udp_print_stats(struct rpc_xprt *xprt, struct seq_file *seq) in xs_udp_print_stats() argument
2285 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_udp_print_stats()
2290 xprt->stat.bind_count, in xs_udp_print_stats()
2291 xprt->stat.sends, in xs_udp_print_stats()
2292 xprt->stat.recvs, in xs_udp_print_stats()
2293 xprt->stat.bad_xids, in xs_udp_print_stats()
2294 xprt->stat.req_u, in xs_udp_print_stats()
2295 xprt->stat.bklog_u, in xs_udp_print_stats()
2296 xprt->stat.max_slots, in xs_udp_print_stats()
2297 xprt->stat.sending_u, in xs_udp_print_stats()
2298 xprt->stat.pending_u); in xs_udp_print_stats()
2307 static void xs_tcp_print_stats(struct rpc_xprt *xprt, struct seq_file *seq) in xs_tcp_print_stats() argument
2309 struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); in xs_tcp_print_stats()
2312 if (xprt_connected(xprt)) in xs_tcp_print_stats()
2313 idle_time = (long)(jiffies - xprt->last_used) / HZ; in xs_tcp_print_stats()
2318 xprt->stat.bind_count, in xs_tcp_print_stats()
2319 xprt->stat.connect_count, in xs_tcp_print_stats()
2320 xprt->stat.connect_time, in xs_tcp_print_stats()
2322 xprt->stat.sends, in xs_tcp_print_stats()
2323 xprt->stat.recvs, in xs_tcp_print_stats()
2324 xprt->stat.bad_xids, in xs_tcp_print_stats()
2325 xprt->stat.req_u, in xs_tcp_print_stats()
2326 xprt->stat.bklog_u, in xs_tcp_print_stats()
2327 xprt->stat.max_slots, in xs_tcp_print_stats()
2328 xprt->stat.sending_u, in xs_tcp_print_stats()
2329 xprt->stat.pending_u); in xs_tcp_print_stats()
2378 struct rpc_xprt *xprt = req->rq_xprt; in bc_sendto() local
2380 container_of(xprt, struct sock_xprt, xprt); in bc_sendto()
2407 struct svc_xprt *xprt; in bc_send_request() local
2414 xprt = req->rq_xprt->bc_xprt; in bc_send_request()
2420 if (!mutex_trylock(&xprt->xpt_mutex)) { in bc_send_request()
2421 rpc_sleep_on(&xprt->xpt_bc_pending, task, NULL); in bc_send_request()
2422 if (!mutex_trylock(&xprt->xpt_mutex)) in bc_send_request()
2424 rpc_wake_up_queued_task(&xprt->xpt_bc_pending, task); in bc_send_request()
2426 if (test_bit(XPT_DEAD, &xprt->xpt_flags)) in bc_send_request()
2430 mutex_unlock(&xprt->xpt_mutex); in bc_send_request()
2442 static void bc_close(struct rpc_xprt *xprt) in bc_close() argument
2451 static void bc_destroy(struct rpc_xprt *xprt) in bc_destroy() argument
2453 dprintk("RPC: bc_destroy xprt %p\n", xprt); in bc_destroy()
2455 xs_xprt_free(xprt); in bc_destroy()
2558 struct rpc_xprt *xprt; in xs_setup_xprt() local
2561 if (args->addrlen > sizeof(xprt->addr)) { in xs_setup_xprt()
2566 xprt = xprt_alloc(args->net, sizeof(*new), slot_table_size, in xs_setup_xprt()
2568 if (xprt == NULL) { in xs_setup_xprt()
2574 new = container_of(xprt, struct sock_xprt, xprt); in xs_setup_xprt()
2575 memcpy(&xprt->addr, args->dstaddr, args->addrlen); in xs_setup_xprt()
2576 xprt->addrlen = args->addrlen; in xs_setup_xprt()
2584 xprt_free(xprt); in xs_setup_xprt()
2589 return xprt; in xs_setup_xprt()
2608 struct rpc_xprt *xprt; in xs_setup_local() local
2611 xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries, in xs_setup_local()
2613 if (IS_ERR(xprt)) in xs_setup_local()
2614 return xprt; in xs_setup_local()
2615 transport = container_of(xprt, struct sock_xprt, xprt); in xs_setup_local()
2617 xprt->prot = 0; in xs_setup_local()
2618 xprt->tsh_size = sizeof(rpc_fraghdr) / sizeof(u32); in xs_setup_local()
2619 xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; in xs_setup_local()
2621 xprt->bind_timeout = XS_BIND_TO; in xs_setup_local()
2622 xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO; in xs_setup_local()
2623 xprt->idle_timeout = XS_IDLE_DISC_TO; in xs_setup_local()
2625 xprt->ops = &xs_local_ops; in xs_setup_local()
2626 xprt->timeout = &xs_local_default_timeout; in xs_setup_local()
2639 xprt_set_bound(xprt); in xs_setup_local()
2640 xs_format_peer_addresses(xprt, "local", RPCBIND_NETID_LOCAL); in xs_setup_local()
2651 xprt->address_strings[RPC_DISPLAY_ADDR]); in xs_setup_local()
2654 return xprt; in xs_setup_local()
2657 xs_xprt_free(xprt); in xs_setup_local()
2676 struct rpc_xprt *xprt; in xs_setup_udp() local
2680 xprt = xs_setup_xprt(args, xprt_udp_slot_table_entries, in xs_setup_udp()
2682 if (IS_ERR(xprt)) in xs_setup_udp()
2683 return xprt; in xs_setup_udp()
2684 transport = container_of(xprt, struct sock_xprt, xprt); in xs_setup_udp()
2686 xprt->prot = IPPROTO_UDP; in xs_setup_udp()
2687 xprt->tsh_size = 0; in xs_setup_udp()
2689 xprt->max_payload = (1U << 16) - (MAX_HEADER << 3); in xs_setup_udp()
2691 xprt->bind_timeout = XS_BIND_TO; in xs_setup_udp()
2692 xprt->reestablish_timeout = XS_UDP_REEST_TO; in xs_setup_udp()
2693 xprt->idle_timeout = XS_IDLE_DISC_TO; in xs_setup_udp()
2695 xprt->ops = &xs_udp_ops; in xs_setup_udp()
2697 xprt->timeout = &xs_udp_default_timeout; in xs_setup_udp()
2702 xprt_set_bound(xprt); in xs_setup_udp()
2706 xs_format_peer_addresses(xprt, "udp", RPCBIND_NETID_UDP); in xs_setup_udp()
2710 xprt_set_bound(xprt); in xs_setup_udp()
2714 xs_format_peer_addresses(xprt, "udp", RPCBIND_NETID_UDP6); in xs_setup_udp()
2721 if (xprt_bound(xprt)) in xs_setup_udp()
2723 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_setup_udp()
2724 xprt->address_strings[RPC_DISPLAY_PORT], in xs_setup_udp()
2725 xprt->address_strings[RPC_DISPLAY_PROTO]); in xs_setup_udp()
2728 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_setup_udp()
2729 xprt->address_strings[RPC_DISPLAY_PROTO]); in xs_setup_udp()
2732 return xprt; in xs_setup_udp()
2735 xs_xprt_free(xprt); in xs_setup_udp()
2753 struct rpc_xprt *xprt; in xs_setup_tcp() local
2761 xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries, in xs_setup_tcp()
2763 if (IS_ERR(xprt)) in xs_setup_tcp()
2764 return xprt; in xs_setup_tcp()
2765 transport = container_of(xprt, struct sock_xprt, xprt); in xs_setup_tcp()
2767 xprt->prot = IPPROTO_TCP; in xs_setup_tcp()
2768 xprt->tsh_size = sizeof(rpc_fraghdr) / sizeof(u32); in xs_setup_tcp()
2769 xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; in xs_setup_tcp()
2771 xprt->bind_timeout = XS_BIND_TO; in xs_setup_tcp()
2772 xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO; in xs_setup_tcp()
2773 xprt->idle_timeout = XS_IDLE_DISC_TO; in xs_setup_tcp()
2775 xprt->ops = &xs_tcp_ops; in xs_setup_tcp()
2776 xprt->timeout = &xs_tcp_default_timeout; in xs_setup_tcp()
2781 xprt_set_bound(xprt); in xs_setup_tcp()
2785 xs_format_peer_addresses(xprt, "tcp", RPCBIND_NETID_TCP); in xs_setup_tcp()
2789 xprt_set_bound(xprt); in xs_setup_tcp()
2793 xs_format_peer_addresses(xprt, "tcp", RPCBIND_NETID_TCP6); in xs_setup_tcp()
2800 if (xprt_bound(xprt)) in xs_setup_tcp()
2802 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_setup_tcp()
2803 xprt->address_strings[RPC_DISPLAY_PORT], in xs_setup_tcp()
2804 xprt->address_strings[RPC_DISPLAY_PROTO]); in xs_setup_tcp()
2807 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_setup_tcp()
2808 xprt->address_strings[RPC_DISPLAY_PROTO]); in xs_setup_tcp()
2811 return xprt; in xs_setup_tcp()
2814 xs_xprt_free(xprt); in xs_setup_tcp()
2826 struct rpc_xprt *xprt; in xs_setup_bc_tcp() local
2831 xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries, in xs_setup_bc_tcp()
2833 if (IS_ERR(xprt)) in xs_setup_bc_tcp()
2834 return xprt; in xs_setup_bc_tcp()
2835 transport = container_of(xprt, struct sock_xprt, xprt); in xs_setup_bc_tcp()
2837 xprt->prot = IPPROTO_TCP; in xs_setup_bc_tcp()
2838 xprt->tsh_size = sizeof(rpc_fraghdr) / sizeof(u32); in xs_setup_bc_tcp()
2839 xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; in xs_setup_bc_tcp()
2840 xprt->timeout = &xs_tcp_default_timeout; in xs_setup_bc_tcp()
2843 xprt_set_bound(xprt); in xs_setup_bc_tcp()
2844 xprt->bind_timeout = 0; in xs_setup_bc_tcp()
2845 xprt->reestablish_timeout = 0; in xs_setup_bc_tcp()
2846 xprt->idle_timeout = 0; in xs_setup_bc_tcp()
2848 xprt->ops = &bc_tcp_ops; in xs_setup_bc_tcp()
2852 xs_format_peer_addresses(xprt, "tcp", in xs_setup_bc_tcp()
2856 xs_format_peer_addresses(xprt, "tcp", in xs_setup_bc_tcp()
2865 xprt->address_strings[RPC_DISPLAY_ADDR], in xs_setup_bc_tcp()
2866 xprt->address_strings[RPC_DISPLAY_PORT], in xs_setup_bc_tcp()
2867 xprt->address_strings[RPC_DISPLAY_PROTO]); in xs_setup_bc_tcp()
2875 xprt_get(xprt); in xs_setup_bc_tcp()
2876 args->bc_xprt->xpt_bc_xprt = xprt; in xs_setup_bc_tcp()
2877 xprt->bc_xprt = args->bc_xprt; in xs_setup_bc_tcp()
2886 xprt_set_connected(xprt); in xs_setup_bc_tcp()
2889 return xprt; in xs_setup_bc_tcp()
2892 xprt_put(xprt); in xs_setup_bc_tcp()
2895 xs_xprt_free(xprt); in xs_setup_bc_tcp()