xas_reload(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– xas_reload(9) β€” like, the kernel API manual page, bestie πŸ’–

Okay so welcome to xas_reload(9) from the Kernel API Manual β€” yes that's the manual name, and no I will not be normal about this function. It's tiny. It's one (1) job. And it does that job immaculately. πŸŽ€


✨ NAME ✨

xas_reload β€” refetch an entry from the xarray. That's it. That's the whole vibe. πŸ¦‹


🌸 SYNOPSIS 🌸

void * xas_reload (struct xa_state *xas );

Look at that signature. void * out, struct xa_state * in. No cap, it's giving "minimalist icon". πŸ’…


🫢 ARGUMENTS 🫢

  • xas β€” the XArray operation state. It's the little state struct that knows where you are in the array, bestie. Keep it close. πŸ₯Ί

πŸ’« DESCRIPTION πŸ’«

Okay so the whole point of this function: you use it to check that a previously loaded entry still has the same value. Like a vibe check but for pointers. πŸ”₯

And why would you want that, you ask? Bestie. It is so useful for the lockless pagecache lookup β€” the kind where we walk the array with only the RCU lock to protect us, then lock the page, then check that the page hasn't moved since we looked it up. Walk β†’ lock β†’ recheck. That's the whole choreography. 🧚

⚠️ Real talk though: the caller guarantees that xas is still valid. That's on you, not the function. If it may be in an error or restart state, call xas_load instead. Do not skip this. Do not be cute about this. πŸ™ˆ

⭐ RETURN ⭐

The entry at this location in the xarray. That's the return value. That's the gift. 🎁


πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./include/linux/xarray.h β€” and then, an absolute feast of cross-references, so buckle up buttercup:

xa_mk_value(9), xa_to_value(9), xa_is_value(9), xa_tag_pointer(9), xa_untag_pointer(9), xa_pointer_tag(9), xa_is_zero(9), xa_is_err(9), xa_err(9), struct xa_limit(9), struct xarray(9), DEFINE_XARRAY_FLAGS(9), DEFINE_XARRAY(9), DEFINE_XARRAY_ALLOC(9), DEFINE_XARRAY_ALLOC1(9), xa_init_flags(9), xa_init(9), xa_empty(9), xa_marked(9), xa_for_each_range(9), xa_for_each_start(9), xa_for_each(9), xa_for_each_marked(9), xa_store_bh(9), xa_store_irq(9), xa_erase_bh(9), xa_erase_irq(9), xa_cmpxchg(9), xa_cmpxchg_bh(9), xa_cmpxchg_irq(9), xa_insert(9), xa_insert_bh(9), xa_insert_irq(9), xa_alloc(9), xa_alloc_bh(9), xa_alloc_irq(9), xa_alloc_cyclic(9), xa_alloc_cyclic_bh(9), xa_alloc_cyclic_irq(9), xa_reserve(9), xa_reserve_bh(9), xa_reserve_irq(9), xa_release(9), xa_is_sibling(9), xa_is_retry(9), xa_is_advanced(9), xa_update_node_t(9), XA_STATE(9), XA_STATE_ORDER(9), xas_error(9), xas_set_err(9), xas_invalid(9), xas_valid(9), xas_is_node(9), xas_reset(9), xas_retry(9), xas_set(9), xas_advance(9), xas_set_order(9), xas_set_update(9), xas_next_entry(9), xas_next_marked(9), xas_for_each(9), xas_for_each_marked(9), xas_for_each_conflict(9), xas_prev(9), xas_next(9)


and that's the whole page, bestie πŸ«Άβœ¨πŸ’œ

This lil masterpiece lives in ./include/linux and it's dated October 2026 β€” so yeah, go off, future manpage. πŸ’€πŸŽ€ iykyk.

πŸ“¦ where this page comes from