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);