Lines Matching refs:xpi
216 const struct rpc_xprt_iter_ops *xprt_iter_ops(const struct rpc_xprt_iter *xpi) in xprt_iter_ops() argument
218 if (xpi->xpi_ops != NULL) in xprt_iter_ops()
219 return xpi->xpi_ops; in xprt_iter_ops()
220 return rcu_dereference(xpi->xpi_xpswitch)->xps_iter_ops; in xprt_iter_ops()
224 void xprt_iter_no_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_no_rewind() argument
229 void xprt_iter_default_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_default_rewind() argument
231 WRITE_ONCE(xpi->xpi_cursor, NULL); in xprt_iter_default_rewind()
266 struct rpc_xprt *xprt_iter_first_entry(struct rpc_xprt_iter *xpi) in xprt_iter_first_entry() argument
268 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_first_entry()
301 struct rpc_xprt * _xprt_iter_current_entry(struct rpc_xprt_iter *xpi, in _xprt_iter_current_entry() argument
306 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in _xprt_iter_current_entry()
312 if (xpi->xpi_cursor == NULL || xps->xps_nxprts < 2) in _xprt_iter_current_entry()
314 return current_entry(head, xpi->xpi_cursor); in _xprt_iter_current_entry()
318 struct rpc_xprt *xprt_iter_current_entry(struct rpc_xprt_iter *xpi) in xprt_iter_current_entry() argument
320 return _xprt_iter_current_entry(xpi, xprt_switch_find_first_entry, in xprt_iter_current_entry()
332 struct rpc_xprt *xprt_iter_current_entry_offline(struct rpc_xprt_iter *xpi) in xprt_iter_current_entry_offline() argument
334 return _xprt_iter_current_entry(xpi, in xprt_iter_current_entry_offline()
395 struct rpc_xprt *xprt_iter_next_entry_multiple(struct rpc_xprt_iter *xpi, in xprt_iter_next_entry_multiple() argument
398 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_next_entry_multiple()
402 return xprt_switch_set_next_cursor(xps, &xpi->xpi_cursor, find_next); in xprt_iter_next_entry_multiple()
443 struct rpc_xprt *xprt_iter_next_entry_roundrobin(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_roundrobin() argument
445 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_roundrobin()
464 struct rpc_xprt *xprt_iter_next_entry_all(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_all() argument
466 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_all()
471 struct rpc_xprt *xprt_iter_next_entry_offline(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_offline() argument
473 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_offline()
484 void xprt_iter_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_rewind() argument
487 xprt_iter_ops(xpi)->xpi_rewind(xpi); in xprt_iter_rewind()
491 static void __xprt_iter_init(struct rpc_xprt_iter *xpi, in __xprt_iter_init() argument
495 rcu_assign_pointer(xpi->xpi_xpswitch, xprt_switch_get(xps)); in __xprt_iter_init()
496 xpi->xpi_cursor = NULL; in __xprt_iter_init()
497 xpi->xpi_ops = ops; in __xprt_iter_init()
509 void xprt_iter_init(struct rpc_xprt_iter *xpi, in xprt_iter_init() argument
512 __xprt_iter_init(xpi, xps, NULL); in xprt_iter_init()
523 void xprt_iter_init_listall(struct rpc_xprt_iter *xpi, in xprt_iter_init_listall() argument
526 __xprt_iter_init(xpi, xps, &rpc_xprt_iter_listall); in xprt_iter_init_listall()
529 void xprt_iter_init_listoffline(struct rpc_xprt_iter *xpi, in xprt_iter_init_listoffline() argument
532 __xprt_iter_init(xpi, xps, &rpc_xprt_iter_listoffline); in xprt_iter_init_listoffline()
542 struct rpc_xprt_switch *xprt_iter_xchg_switch(struct rpc_xprt_iter *xpi, in xprt_iter_xchg_switch() argument
548 oldswitch = xchg(&xpi->xpi_xpswitch, RCU_INITIALIZER(newswitch)); in xprt_iter_xchg_switch()
550 xprt_iter_rewind(xpi); in xprt_iter_xchg_switch()
558 void xprt_iter_destroy(struct rpc_xprt_iter *xpi) in xprt_iter_destroy() argument
560 xprt_switch_put(xprt_iter_xchg_switch(xpi, NULL)); in xprt_iter_destroy()
571 struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_xprt() argument
574 return xprt_iter_ops(xpi)->xpi_xprt(xpi); in xprt_iter_xprt()
578 struct rpc_xprt *xprt_iter_get_helper(struct rpc_xprt_iter *xpi, in xprt_iter_get_helper() argument
584 ret = fn(xpi); in xprt_iter_get_helper()
599 struct rpc_xprt *xprt_iter_get_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_get_xprt() argument
604 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_xprt); in xprt_iter_get_xprt()
616 struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi) in xprt_iter_get_next() argument
621 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_next); in xprt_iter_get_next()