hlist_bl_del_rcu(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– hlist_bl_del_rcu(9) πŸ’–

okay so bestie, welcome to this page from the Kernel API Manual. We're talking about hlist_bl_del_rcu, and the vibe check is: it deletes an entry from a hash list, but without re-initialization. No cap. Let's get into it. πŸ’…


✨ NAME ✨

hlist_bl_del_rcu β€” deletes entry from hash list without re-initialization


πŸ¦‹ SYNOPSIS πŸ¦‹

void hlist_bl_del_rcu (struct hlist_bl_node *n );

πŸ“ ARGUMENTS πŸ“

  • n β€” the element to delete from the hash list. That's the main character here, fr fr. 🫢

⚠️ NOTE ⚠️

Heads up bestie, this part is important. hlist_bl_unhashed on entry does not return true after this. Nope. After this call, the entry is in an undefined state. That's just how it is. It is useful for RCU based lockfree traversal, though. Slay. ✨

In particular, it means we can not poison the forward pointers that may still be used for walking the hash list. So yeah, no poisoning those forward pointers β€” they might still be doing their little walk. πŸ’€

The caller must take whatever precautions are necessary (such as holding appropriate locks) to avoid racing with another list-mutation primitive, such as hlist_bl_add_head_rcu or hlist_bl_del_rcu, running on this same list. That's the serious bit, okay? 🚨 However, it is perfectly legal to run concurrently with the _rcu list-traversal primitives, such as hlist_bl_for_each_entry. So that part is lowkey fine. 🌈


🌸 SEE ALSO 🌸

Kernel file ./include/linux/rculist_bl.h β€” plus these icons: hlist_bl_add_head_rcu(9), hlist_bl_for_each_entry_rcu(9), hlist_bl_for_each_entry_continue_rcu(9). Go peep them when you're done here. πŸ‘‘


xoxo, your Kernel API Manual girl πŸ’… β€” this page is sourced from ./include/linux, dated October 2026, and it's the hlist_bl_del_rcu(9) page. Periodt. πŸŽ€

πŸ“¦ where this page comes from