Lines Matching refs:xpi

180 const struct rpc_xprt_iter_ops *xprt_iter_ops(const struct rpc_xprt_iter *xpi)  in xprt_iter_ops()  argument
182 if (xpi->xpi_ops != NULL) in xprt_iter_ops()
183 return xpi->xpi_ops; in xprt_iter_ops()
184 return rcu_dereference(xpi->xpi_xpswitch)->xps_iter_ops; in xprt_iter_ops()
188 void xprt_iter_no_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_no_rewind() argument
193 void xprt_iter_default_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_default_rewind() argument
195 WRITE_ONCE(xpi->xpi_cursor, NULL); in xprt_iter_default_rewind()
217 struct rpc_xprt *xprt_iter_first_entry(struct rpc_xprt_iter *xpi) in xprt_iter_first_entry() argument
219 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_first_entry()
243 struct rpc_xprt *xprt_iter_current_entry(struct rpc_xprt_iter *xpi) in xprt_iter_current_entry() argument
245 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_current_entry()
251 if (xpi->xpi_cursor == NULL || xps->xps_nxprts < 2) in xprt_iter_current_entry()
253 return xprt_switch_find_current_entry(head, xpi->xpi_cursor); in xprt_iter_current_entry()
307 struct rpc_xprt *xprt_iter_next_entry_multiple(struct rpc_xprt_iter *xpi, in xprt_iter_next_entry_multiple() argument
310 struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); in xprt_iter_next_entry_multiple()
314 return xprt_switch_set_next_cursor(xps, &xpi->xpi_cursor, find_next); in xprt_iter_next_entry_multiple()
355 struct rpc_xprt *xprt_iter_next_entry_roundrobin(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_roundrobin() argument
357 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_roundrobin()
369 struct rpc_xprt *xprt_iter_next_entry_all(struct rpc_xprt_iter *xpi) in xprt_iter_next_entry_all() argument
371 return xprt_iter_next_entry_multiple(xpi, in xprt_iter_next_entry_all()
383 void xprt_iter_rewind(struct rpc_xprt_iter *xpi) in xprt_iter_rewind() argument
386 xprt_iter_ops(xpi)->xpi_rewind(xpi); in xprt_iter_rewind()
390 static void __xprt_iter_init(struct rpc_xprt_iter *xpi, in __xprt_iter_init() argument
394 rcu_assign_pointer(xpi->xpi_xpswitch, xprt_switch_get(xps)); in __xprt_iter_init()
395 xpi->xpi_cursor = NULL; in __xprt_iter_init()
396 xpi->xpi_ops = ops; in __xprt_iter_init()
408 void xprt_iter_init(struct rpc_xprt_iter *xpi, in xprt_iter_init() argument
411 __xprt_iter_init(xpi, xps, NULL); in xprt_iter_init()
422 void xprt_iter_init_listall(struct rpc_xprt_iter *xpi, in xprt_iter_init_listall() argument
425 __xprt_iter_init(xpi, xps, &rpc_xprt_iter_listall); in xprt_iter_init_listall()
435 struct rpc_xprt_switch *xprt_iter_xchg_switch(struct rpc_xprt_iter *xpi, in xprt_iter_xchg_switch() argument
441 oldswitch = xchg(&xpi->xpi_xpswitch, RCU_INITIALIZER(newswitch)); in xprt_iter_xchg_switch()
443 xprt_iter_rewind(xpi); in xprt_iter_xchg_switch()
451 void xprt_iter_destroy(struct rpc_xprt_iter *xpi) in xprt_iter_destroy() argument
453 xprt_switch_put(xprt_iter_xchg_switch(xpi, NULL)); in xprt_iter_destroy()
464 struct rpc_xprt *xprt_iter_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_xprt() argument
467 return xprt_iter_ops(xpi)->xpi_xprt(xpi); in xprt_iter_xprt()
471 struct rpc_xprt *xprt_iter_get_helper(struct rpc_xprt_iter *xpi, in xprt_iter_get_helper() argument
477 ret = fn(xpi); in xprt_iter_get_helper()
492 struct rpc_xprt *xprt_iter_get_xprt(struct rpc_xprt_iter *xpi) in xprt_iter_get_xprt() argument
497 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_xprt); in xprt_iter_get_xprt()
509 struct rpc_xprt *xprt_iter_get_next(struct rpc_xprt_iter *xpi) in xprt_iter_get_next() argument
514 xprt = xprt_iter_get_helper(xpi, xprt_iter_ops(xpi)->xpi_next); in xprt_iter_get_next()