vdo_acquire_hash_lock(9)
πΈ 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β thedata_viocompletion 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms