search_reference_blocks(9)
okay bestie, welcome to search_reference_blocks(9) from the Kernel API Manual β yes, it's giving deeply specific kernel-core energy, and we're obsessed. π
β¨
π NAME π
search_reference_blocks β search each reference block for a reference count of zero. π
β¨ SYNOPSIS β¨
bool search_reference_blocks (struct vdo_slab *slab , slab_block_number
*free_index_ptr );
π«Ά ARGUMENTS π«Ά
slabβ the slab to search. That's the main-character slab. πfree_index_ptrβ a pointer to receive the array index of the zero reference count. It's literally there to catch the index. π«Ά
π¦ DESCRIPTION π¦
So here's the vibe: it searches each reference block for a reference count of zero, starting at the reference block and counter index saved in the search cursor, and it searches up to the end of the last reference block. The search does not wrap β periodt. No sneaky looping back around, no wrap-around shenanigans, just straight through to the end. πβ¨
πΈ RETURN πΈ
True if an unreferenced counter was found. That's the whole return moment. π
π SEE ALSO π
Kernel file: ./drivers/md/dm-vdo/slab-depot.c. And now the entire SEE ALSO group chat, all present and accounted for:
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),release_journal_locks(9),update_tail_block_location(9),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),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)
π that's the whole page, bestie β brought to you by the ./drivers/md/dm-vdo source/version and dated October 2026, with immaculate kernel energy β¨π
π¦ 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