vdo_acquire_hash_lock(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 vdo_acquire_hash_lock β€” Kernel API Manual ✨

okay so bestie, welcome to vdo_acquire_hash_lock(9) πŸ’… this one's short but it's doing something, so pay attention.


πŸ’– NAME πŸ’–

vdo_acquire_hash_lock β€” grab a lock on a record name, or share one if someone already called dibs 🫢


πŸŽ€ SYNOPSIS πŸŽ€

void vdo_acquire_hash_lock (struct vdo_completion *completion );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • completion β€” the data_vio completion that's out here trying to lock its record name. that's the whole vibe. πŸ”₯

⭐ DESCRIPTION ⭐

so what it does is: it acquires β€” or shares, your choice, we're flexible β€” a lock on the hash (a.k.a. the record name) of the data chillin' inside a data_vio, and then it updates that data_vio so it's referencing the lock. iconic behaviour, honestly. πŸ‘‘

⚠️ okay big warning bestie: this must only be called in the correct thread for the zone. like, the correct one. do not be out here freelancing with threads, i'm begging 😭

and now the fun part πŸ“ β€” in the unlikely case of a hash collision, this function will succeed, but your data_vio will not get a lock reference. so it's a success that's kinda… not. the way that it says "sure!" and then hands you nothing πŸ’€. not a bug, that's just how it is. note it and move on.


🌈 SEE ALSO 🌈

literally the whole extended friend group πŸ’œ β€” go say hi:

Kernel file ./drivers/md/dm-vdo/dedupe.c, Introduction(9), return_hash_lock_to_pool(9), vdo_get_duplicate_lock(9), hash_lock_key(9), get_hash_lock_state_name(9), assert_hash_lock_agent(9), set_duplicate_lock(9), dequeue_lock_waiter(9), set_hash_lock(9), exit_hash_lock(9), set_duplicate_location(9), retire_lock_agent(9), wait_on_hash_lock(9), abort_waiter(9), start_bypassing(9), finish_unlocking(9), unlock_duplicate_pbn(9), start_unlocking(9), finish_updating(9), start_updating(9), finish_deduping(9), acquire_lock(9), enter_forked_lock(9), fork_hash_lock(9), launch_dedupe(9), start_deduping(9), increment_stat(9), finish_verifying(9), start_verifying(9), finish_locking(9), lock_duplicate_pbn(9), start_locking(9), finish_writing(9), select_writing_agent(9), start_writing(9), finish_querying(9), start_querying(9), report_bogus_lock_state(9), vdo_continue_hash_lock(9), is_hash_collision(9), vdo_release_hash_lock(9), transfer_allocation_lock(9), vdo_share_compressed_write_lock(9), report_dedupe_timeouts(9), finish_index_operation(9), check_for_drain_complete(9), vdo_make_hash_zones(9), vdo_free_hash_zones(9), suspend_index(9), resume_index(9), vdo_resume_hash_zones(9), get_hash_zone_statistics(9), vdo_get_dedupe_statistics(9), vdo_select_hash_zone(9), dump_hash_lock(9), dump_hash_zone(9), vdo_dump_hash_zones(9), acquire_context(9)


mwah πŸ’‹ that's the page! this lil drop lives in ./drivers/md/dm-vdo and it's dated October 2026, and the header at the very top of the page is literally just vdo_acquire_hash_lock(9) again (they love a callback). go forth and lock responsibly, bestie πŸ§šπŸ’–

πŸ“¦ where this page comes from