Lines Matching refs:xpi

214 const struct rpc_xprt_iter_ops *xprt_iter_ops(const struct rpc_xprt_iter *xpi)  in xprt_iter_ops()  argument
216 if (xpi->xpi_ops != NULL) in xprt_iter_ops()
217 return xpi->xpi_ops; in xprt_iter_ops()
218 return rcu_dereference(xpi->xpi_xpswitch)->xps_iter_ops; in xprt_iter_ops()
222 void xprt_iter_no_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_no_rewind() argument
227 void xprt_iter_default_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_default_rewind() argument
229 WRITE_ONCE(xpi->xpi_cursor, NULL); in xprt_iter_default_rewind()
252 struct rpc_xprt *xprt_iter_first_entry(struct rpc_xprt_iter *xpi) in xprt_iter_first_entry() argument
254 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_first_entry()
278 struct rpc_xprt *xprt_iter_current_entry(struct rpc_xprt_iter *xpi) in xprt_iter_current_entry() argument
280 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_current_entry()
286 if (xpi->xpi_cursor == NULL || xps->xps_nxprts < 2) in xprt_iter_current_entry()
288 return xprt_switch_find_current_entry(head, xpi->xpi_cursor); in xprt_iter_current_entry()
342 struct rpc_xprt *xprt_iter_next_entry_multiple(struct rpc_xprt_iter *xpi, in xprt_iter_next_entry_multiple() argument
345 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_next_entry_multiple()
349 return xprt_switch_set_next_cursor(xps, &xpi->xpi_cursor, find_next); in xprt_iter_next_entry_multiple()
390 struct rpc_xprt *xprt_iter_next_entry_roundrobin(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_roundrobin() argument
392 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_roundrobin()
404 struct rpc_xprt *xprt_iter_next_entry_all(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_all() argument
406 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_all()
418 void xprt_iter_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_rewind() argument
421 xprt_iter_ops(xpi)->xpi_rewind(xpi); in xprt_iter_rewind()
425 static void __xprt_iter_init(struct rpc_xprt_iter *xpi, in __xprt_iter_init() argument
429 rcu_assign_pointer(xpi->xpi_xpswitch, xprt_switch_get(xps)); in __xprt_iter_init()
430 xpi->xpi_cursor = NULL; in __xprt_iter_init()
431 xpi->xpi_ops = ops; in __xprt_iter_init()
443 void xprt_iter_init(struct rpc_xprt_iter *xpi, in xprt_iter_init() argument
446 __xprt_iter_init(xpi, xps, NULL); in xprt_iter_init()
457 void xprt_iter_init_listall(struct rpc_xprt_iter *xpi, in xprt_iter_init_listall() argument
460 __xprt_iter_init(xpi, xps, &rpc_xprt_iter_listall); in xprt_iter_init_listall()
470 struct rpc_xprt_switch *xprt_iter_xchg_switch(struct rpc_xprt_iter *xpi, in xprt_iter_xchg_switch() argument
476 oldswitch = xchg(&xpi->xpi_xpswitch, RCU_INITIALIZER(newswitch)); in xprt_iter_xchg_switch()
478 xprt_iter_rewind(xpi); in xprt_iter_xchg_switch()
486 void xprt_iter_destroy(struct rpc_xprt_iter *xpi) in xprt_iter_destroy() argument
488 xprt_switch_put(xprt_iter_xchg_switch(xpi, NULL)); in xprt_iter_destroy()
499 struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_xprt() argument
502 return xprt_iter_ops(xpi)->xpi_xprt(xpi); in xprt_iter_xprt()
506 struct rpc_xprt *xprt_iter_get_helper(struct rpc_xprt_iter *xpi, in xprt_iter_get_helper() argument
512 ret = fn(xpi); in xprt_iter_get_helper()
527 struct rpc_xprt *xprt_iter_get_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_get_xprt() argument
532 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_xprt); in xprt_iter_get_xprt()
544 struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi) in xprt_iter_get_next() argument
549 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_next); in xprt_iter_get_next()