release_journal_locks(9)
π release_journal_locks β a page from the Kernel API Manual
ok so bestie, we're looking at release_journal_locks(9), and no cap, the name tells you almost everything: it's a callback that gets invoked after a slab summary update completes. that's it. that's the whole vibe. β¨
π SYNOPSIS
void release_journal_locks (struct vdo_waiter *waiter , void *context );
literally the whole signature. two args, zero drama, returns nothing (void β she gives, she doesn't take π«Ά).
πΈ ARGUMENTS
waiterβ the slab summary waiter that has just been notified. like, she just got the text, and now she's here πcontextβ the result code of the update. the receipts. the outcome. iykyk.
π¦ DESCRIPTION
ok so here's the lore: this function is registered in the constructor on behalf of update_tail_block_location. so update_tail_block_location didn't want to handle the callback itself, it was like "someone else handle this pls" and release_journal_locks said "say less" π
and technically? it implements waiter_callback_fn. that's her type. that's her whole job description. iconic behavior.
ngl there's not a ton more to say here β the page is short and she knows it. main character energy doesn't need a long bio. π
π₯ SEE ALSO
bestie, buckle up, because the friend group is huge. this is the whole squad from Kernel file ./drivers/md/dm-vdo/slab-depot.c:
get_lock(9)must_make_entries_to_flush(9)is_reaping(9)initialize_tail_block(9)initialize_journal_state(9)block_is_full(9)is_slab_journal_blank(9)mark_slab_journal_dirty(9)compute_fullness_hint(9)check_summary_drain_complete(9)notify_summary_waiters(9)finish_updating_slab_summary_block(9)finish_update(9)handle_write_error(9)launch_write(9)update_slab_summary_entry(9)finish_reaping(9)complete_reaping(9)handle_flush_error(9)flush_for_reaping(9)reap_slab_journal(9)adjust_slab_journal_block_reference(9)update_tail_block_location(9)β the one who registered her, hey bestie πreopen_slab_journal(9)complete_write(9)write_slab_journal_block(9)commit_tail(9)encode_slab_journal_entry(9)expand_journal_point(9)add_entry(9)vdo_attempt_replay_into_slab(9)requires_reaping(9)launch_reference_block_write(9)finish_reference_block_write(9)get_reference_counters_for_block(9)pack_reference_block(9)handle_io_error(9)write_reference_block(9)reference_count_to_status(9)dirty_block(9)get_reference_block(9)slab_block_number_from_pbn(9)get_reference_counter(9)adjust_free_block_count(9)increment_for_data(9)decrement_for_data(9)increment_for_block_map(9)update_reference_count(9)add_entry_from_waiter(9)is_next_entry_a_block_map_increment(9)add_entries(9)reset_search_cursor(9)advance_search_cursor(9)vdo_adjust_reference_count_for_rebuild(9)replay_reference_count_change(9)find_zero_byte_in_word(9)find_free_block(9)search_current_reference_block(9)search_reference_blocks(9)make_provisional_reference(9)dirty_all_reference_blocks(9)match_bytes(9)count_valid_references(9)unpack_reference_block(9)finish_reference_block_load(9)load_reference_block_group(9)load_reference_blocks(9)drain_slab(9)read_slab_journal_tail(9)load_slab_journal(9)get_next_slab(9)has_slabs_to_scrub(9)uninitialize_scrubber_vio(9)finish_scrubbing(9)slab_scrubbed(9)abort_scrubbing(9)handle_scrubber_error(9)apply_block_entries(9)apply_journal_entries(9)start_scrubbing(9)scrub_next_slab(9)scrub_slabs(9)get_depot_slab_iterator(9)next_slab(9)abort_waiter(9)vdo_acquire_provisional_reference(9)open_slab(9)vdo_enqueue_clean_slab_waiter(9)vdo_modify_reference_count(9)vdo_notify_slab_journals_are_recovered(9)make_slab(9)allocate_slabs(9)vdo_abandon_new_slabs(9)release_recovery_journal_lock(9)prepare_for_tail_block_commit(9)schedule_tail_block_commit(9)initialize_slab_scrubber(9)initialize_slab_summary_block(9)vdo_decode_slab_depot(9)vdo_free_slab_depot(9)vdo_record_slab_depot(9)vdo_allocate_reference_counters(9)get_slab_number(9)vdo_get_slab(9)vdo_get_increment_limit(9)vdo_is_physical_data_block(9)vdo_get_slab_depot_allocated_blocks(9)vdo_get_slab_depot_data_blocks(9)finish_combining_zones(9)combine_summaries(9)finish_loading_summary(9)load_slab_summary(9)vdo_load_slab_depot(9)vdo_prepare_slab_depot_to_allocate(9)vdo_update_slab_depot_size(9)vdo_prepare_to_grow_slab_depot(9)finish_registration(9)vdo_use_new_slabs(9)stop_scrubbing(9)vdo_drain_slab_depot(9)resume_scrubbing(9)vdo_resume_slab_depot(9)vdo_commit_oldest_slab_journal_tail_blocks(9)vdo_scrub_all_unrecovered_slabs(9)get_block_allocator_statistics(9)get_ref_counts_statistics(9)get_slab_journal_statistics(9)vdo_get_slab_depot_statistics(9)vdo_dump_slab_depot(9)
like. that's the whole gc right there. every single one. i counted, don't worry π
ok that's the page!! this one came from ./drivers/md/dm-vdo, dated October 2026, and she's filed under release_journal_locks(9) β go read her friends, they're all right there πππ
π¦ 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