add_to_dirty_lists(9)
π add_to_dirty_lists(9) β like, the Kernel API Manual era
okay so bestie, welcome to add_to_dirty_lists(9) πΈ β this is a genuine kernel API manual page and it's honestly kinda iconic. buckle up, we're going into the block map π
β¨ NAME β¨
add_to_dirty_lists β add an element to the dirty lists.</p> that's it, that's the whole vibe. π
π¦ SYNOPSIS π¦
void add_to_dirty_lists (struct block_map_zone *zone , struct list_head
*entry , enum block_map_page_type type , sequence_number_t old_period ,
sequence_number_t new_period );
look at her. five whole arguments. main character energy fr fr π
π ARGUMENTS π
okay so let's meet the cast π«Ά β every single one, no skipping:
zoneβ the zone we're operating in rn. like, the neighborhood this whole thing lives in. πentryβ the list entry of the element we're adding. the actual thing being yeeted onto the list. β¨typeβ the type of page. gotta know what kinda page we're dealing with, iykyk.old_periodβ the period in which the element was previously dirtied β or0if it wasn't dirty at all. so0= it was clean, no cap. π§Όnew_periodβ the period in which the element has now been dirtied β or0if it does not hold a lock. π so like,0here is a whole different situation, don't mix them up bestie.
lowkey important:old_periodandnew_periodboth use0as a special "nope" value, but they mean different nopes.0inold_period= wasn't dirty.0innew_period= doesn't hold a lock. π don't conflate them.
π§ SEE ALSO π§
the whole friend group π«Ά β literally every single one, in order, because we do not leave anyone out:
Block map eras(9), initialize_info(9), allocate_cache_components(9), assert_on_cache_thread(9), get_page_state_name(9), update_counter(9), set_info_state(9), find_free_page(9), find_page(9), select_lru_page(9), complete_with_page(9), complete_waiter_with_error(9), complete_waiter_with_page(9), distribute_page_over_waitq(9), set_persistent_error(9), validate_completed_page(9), handle_load_error(9), page_is_loaded(9), handle_rebuild_read_error(9), launch_page_load(9), schedule_page_save(9), launch_page_save(9), completion_needs_page(9), allocate_free_page(9), discard_a_page(9), discard_page_if_needed(9), write_has_finished(9), handle_page_write_error(9), page_is_written_out(9), write_pages(9), vdo_release_page_completion(9), vdo_get_page(9), vdo_request_page_write(9), vdo_get_cached_page(9), vdo_invalidate_page_cache(9), get_tree_page_by_index(9), in_cyclic_range(9), is_not_older(9), vdo_find_block_map_slot(9), make_forest(9), replace_forest(9), finish_cursor(9), continue_traversal(9), finish_traversal_load(9), traverse(9), launch_cursor(9), compute_boundary(9), vdo_traverse_forest(9), initialize_block_map_zone(9), clear_mapped_location(9), set_mapped_location(9)
and the kernel file she lives in π: ./drivers/md/dm-vdo/block-map.c
kisses bestie, go read the block map π
this page is from ./drivers/md/dm-vdo, dated October 2026, and honestly? timeless. mwah. π
π¦ 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