make_slab(9)
π make_slab(9) β a Kernel API Manual moment
okay bestie, welcome to the Kernel API Manual page for make_slab. This one is short and sweet: it's all about constructing a brand-new, empty slab, and the vibe is very βwe're initializing this correctly or we're not doing it at all.β β¨
β¨ NAME β¨
make_slab β Construct a new, empty slab. That's the whole name line, and it ate. π
πΈ SYNOPSIS πΈ
Here's the signature, exactly as it appears β no cap, copy-paste energy only for the code:
int make_slab (physical_block_number_t slab_origin , struct
block_allocator *allocator , slab_count_t slab_number , bool is_new ,
struct vdo_slab **slab_ptr );
π ARGUMENTS π
Here's the cast, and every single one matters:
slab_originβ the physical block number within the block allocator partition of the first block in the slab. Like, the starting coordinate, bestie. πΊοΈallocatorβ the block allocator to which the slab belongs. It's the slab's home allocator. πslab_numberβ the slab number of the slab. Yes, it's exactly what it says on the label. π’is_newβTrueif this slab is being allocated as part of a resize. πslab_ptrβ a pointer to receive the new slab. This is where the shiny new slab gets handed back. π«Ά
π RETURN π
It returns VDO_SUCCESS or an error code. That's it β success or the error girlies, no in-between. β
π¦ SEE ALSO π¦
Kernel file: ./drivers/md/dm-vdo/slab-depot.c β yep, that's the home base. And the squad is, in order, every last one of them:
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),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),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)
xoxo, bestie π source/version: ./drivers/md/dm-vdo; date: October 2026; manual page: make_slab(9). periodt. π«Ά
π¦ 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