xpi                56 include/linux/sunrpc/xprtmultipath.h extern void xprt_iter_init(struct rpc_xprt_iter *xpi,
xpi                59 include/linux/sunrpc/xprtmultipath.h extern void xprt_iter_init_listall(struct rpc_xprt_iter *xpi,
xpi                62 include/linux/sunrpc/xprtmultipath.h extern void xprt_iter_destroy(struct rpc_xprt_iter *xpi);
xpi                65 include/linux/sunrpc/xprtmultipath.h 		struct rpc_xprt_iter *xpi,
xpi                68 include/linux/sunrpc/xprtmultipath.h extern struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi);
xpi                69 include/linux/sunrpc/xprtmultipath.h extern struct rpc_xprt *xprt_iter_get_xprt(struct rpc_xprt_iter *xpi);
xpi                70 include/linux/sunrpc/xprtmultipath.h extern struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi);
xpi               783 net/sunrpc/clnt.c int rpc_clnt_xprt_iter_init(struct rpc_clnt *clnt, struct rpc_xprt_iter *xpi)
xpi               792 net/sunrpc/clnt.c 	xprt_iter_init_listall(xpi, xps);
xpi               812 net/sunrpc/clnt.c 	struct rpc_xprt_iter xpi;
xpi               815 net/sunrpc/clnt.c 	ret = rpc_clnt_xprt_iter_init(clnt, &xpi);
xpi               819 net/sunrpc/clnt.c 		struct rpc_xprt *xprt = xprt_iter_get_next(&xpi);
xpi               828 net/sunrpc/clnt.c 	xprt_iter_destroy(&xpi);
xpi               180 net/sunrpc/xprtmultipath.c const struct rpc_xprt_iter_ops *xprt_iter_ops(const struct rpc_xprt_iter *xpi)
xpi               182 net/sunrpc/xprtmultipath.c 	if (xpi->xpi_ops != NULL)
xpi               183 net/sunrpc/xprtmultipath.c 		return xpi->xpi_ops;
xpi               184 net/sunrpc/xprtmultipath.c 	return rcu_dereference(xpi->xpi_xpswitch)->xps_iter_ops;
xpi               188 net/sunrpc/xprtmultipath.c void xprt_iter_no_rewind(struct rpc_xprt_iter *xpi)
xpi               193 net/sunrpc/xprtmultipath.c void xprt_iter_default_rewind(struct rpc_xprt_iter *xpi)
xpi               195 net/sunrpc/xprtmultipath.c 	WRITE_ONCE(xpi->xpi_cursor, NULL);
xpi               217 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_first_entry(struct rpc_xprt_iter *xpi)
xpi               219 net/sunrpc/xprtmultipath.c 	struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch);
xpi               243 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_current_entry(struct rpc_xprt_iter *xpi)
xpi               245 net/sunrpc/xprtmultipath.c 	struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch);
xpi               251 net/sunrpc/xprtmultipath.c 	if (xpi->xpi_cursor == NULL || xps->xps_nxprts < 2)
xpi               253 net/sunrpc/xprtmultipath.c 	return xprt_switch_find_current_entry(head, xpi->xpi_cursor);
xpi               307 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_next_entry_multiple(struct rpc_xprt_iter *xpi,
xpi               310 net/sunrpc/xprtmultipath.c 	struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch);
xpi               314 net/sunrpc/xprtmultipath.c 	return xprt_switch_set_next_cursor(xps, &xpi->xpi_cursor, find_next);
xpi               355 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_next_entry_roundrobin(struct rpc_xprt_iter *xpi)
xpi               357 net/sunrpc/xprtmultipath.c 	return xprt_iter_next_entry_multiple(xpi,
xpi               369 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_next_entry_all(struct rpc_xprt_iter *xpi)
xpi               371 net/sunrpc/xprtmultipath.c 	return xprt_iter_next_entry_multiple(xpi,
xpi               383 net/sunrpc/xprtmultipath.c void xprt_iter_rewind(struct rpc_xprt_iter *xpi)
xpi               386 net/sunrpc/xprtmultipath.c 	xprt_iter_ops(xpi)->xpi_rewind(xpi);
xpi               390 net/sunrpc/xprtmultipath.c static void __xprt_iter_init(struct rpc_xprt_iter *xpi,
xpi               394 net/sunrpc/xprtmultipath.c 	rcu_assign_pointer(xpi->xpi_xpswitch, xprt_switch_get(xps));
xpi               395 net/sunrpc/xprtmultipath.c 	xpi->xpi_cursor = NULL;
xpi               396 net/sunrpc/xprtmultipath.c 	xpi->xpi_ops = ops;
xpi               408 net/sunrpc/xprtmultipath.c void xprt_iter_init(struct rpc_xprt_iter *xpi,
xpi               411 net/sunrpc/xprtmultipath.c 	__xprt_iter_init(xpi, xps, NULL);
xpi               422 net/sunrpc/xprtmultipath.c void xprt_iter_init_listall(struct rpc_xprt_iter *xpi,
xpi               425 net/sunrpc/xprtmultipath.c 	__xprt_iter_init(xpi, xps, &rpc_xprt_iter_listall);
xpi               435 net/sunrpc/xprtmultipath.c struct rpc_xprt_switch *xprt_iter_xchg_switch(struct rpc_xprt_iter *xpi,
xpi               441 net/sunrpc/xprtmultipath.c 	oldswitch = xchg(&xpi->xpi_xpswitch, RCU_INITIALIZER(newswitch));
xpi               443 net/sunrpc/xprtmultipath.c 		xprt_iter_rewind(xpi);
xpi               451 net/sunrpc/xprtmultipath.c void xprt_iter_destroy(struct rpc_xprt_iter *xpi)
xpi               453 net/sunrpc/xprtmultipath.c 	xprt_switch_put(xprt_iter_xchg_switch(xpi, NULL));
xpi               464 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi)
xpi               467 net/sunrpc/xprtmultipath.c 	return xprt_iter_ops(xpi)->xpi_xprt(xpi);
xpi               471 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_get_helper(struct rpc_xprt_iter *xpi,
xpi               477 net/sunrpc/xprtmultipath.c 		ret = fn(xpi);
xpi               492 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_get_xprt(struct rpc_xprt_iter *xpi)
xpi               497 net/sunrpc/xprtmultipath.c 	xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_xprt);
xpi               509 net/sunrpc/xprtmultipath.c struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi)
xpi               514 net/sunrpc/xprtmultipath.c 	xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_next);