get_depot_slab_iterator(9)
β¨ get_depot_slab_iterator(9) β¨
hii bestie π welcome to the Kernel API Manual, specifically the one (1) page about get_depot_slab_iterator(9) β it's giving "small function, huge friend group" and honestly? we love that for it.
πΈ NAME πΈ
get_depot_slab_iterator β Return a slab_iterator over the slabs in a slab_depot. that's it, that's the whole job, and it does it beautifully. π«Ά
β¨ SYNOPSIS β¨
struct slab_iterator get_depot_slab_iterator (struct slab_depot *depot ,
slab_count_t start , slab_count_t end , slab_count_t stride );
π ARGUMENTS π
depotβ theslab_depotyou're gonna iterate over. your main character. πstartβ the number of the slab to start iterating from. where the little journey begins, no cap.endβ the number of the last slab which may be returned. like, the absolute cut-off, do not pass go. π«strideβ the difference in slab number between successive slabs. how big your steps are. it's giving "skip, skip, skip". π¦
π¦ DESCRIPTION π¦
okay so this is the important bit and I need you to internalize it: iteration always occurs from higher to lower numbered slabs. highkey going down, never up. π not me warning you about the direction like it's a one-way street, but it literally is. periodt.
π RETURN π
An initialized iterator structure. that's it β you get a whole ready-to-go iterator back, all dressed up and ready to vibe. π
π SEE ALSO π
bestie. sit down. this is the friend group, and it is large. π« Kernel file ./drivers/md/dm-vdo/slab-depot.c plus:
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),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),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)
and that's the whole page bestie, you ate it up π
this little gem lives in ./drivers/md/dm-vdo and the version vibes are dated October 2026 β iconic, timeless, fr fr. πβ¨
π¦ 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