vdo_make_thread(9)
π vdo_make_thread(9) β the Kernel API Manual page your group chat has been waiting for
okay so bestie, welcome to vdo_make_thread(9) from the Kernel API Manual, and no cap this one is literally just "build me a work queue and the thread(s) that ride on it." that's the whole vibe. let's get into it π
β¨ NAME β¨
vdo_make_thread β construct a single vdo work_queue and its associated thread (or threads for round-robin queues). yes, plural threads, we'll get there π¦
πΈ SYNOPSIS πΈ
int vdo_make_thread (struct vdo *vdo , thread_id_t thread_id , const
struct vdo_work_queue_type *type , unsigned int queue_count , void
*contexts[] );
she takes five things and returns an int, periodt π
π«Ά ARGUMENTS π«Ά
vdoβ the vdo which owns the thread. like, the whole device object, she's the main character here πthread_idβ the id of the thread to create (as determined by thethread_config). iykyk, the config already picked this number for you.typeβ the description of the work queue for this thread. it's literally giving "here's what kind of queue I am" πqueue_countβ the number of actual threads/queues contained in the "thread". yep, quote-unquote "thread", because one logical thread can be a whole little squad of queues π₯contextsβ an array ofqueue_countcontexts, one for each individual queue; may beNULL. so like, one lil context per queue bestie, or justNULLif nobody needs one π
π DESCRIPTION π
each "thread" constructed by this method is represented by a unique thread id in the thread config, and completions can be enqueued to the queue and run on the threads comprising this entity. that's the tea β β you get an id, you enqueue completions, they run on whichever actual thread/queue belongs to that entity. iconic behavior honestly.
β RETURN β
VDO_SUCCESS or an error. that's it, that's the whole check β if you didn't get VDO_SUCCESS, something went sideways π
π¦ SEE ALSO π¦
like the entire extended fam, no gatekeeping π kernel file ./drivers/md/dm-vdo/vdo.c Introduction(9), vdo_initialize_device_registry_once(9), filter_vdos_locked(9), vdo_find_matching(9), initialize_thread_config(9), get_thread_name(9), register_vdo(9), vdo_format(9), initialize_vdo(9), vdo_make(9), free_listeners(9), unregister_vdo(9), vdo_destroy(9), finish_reading_super_block(9), handle_super_block_read_error(9), vdo_load_super_block(9), vdo_get_backing_device(9), vdo_get_device_name(9), vdo_synchronous_flush(9), vdo_get_state(9), vdo_set_state(9), vdo_get_admin_state(9), record_vdo(9), continue_parent(9), handle_geometry_block_save_error(9), vdo_save_geometry_block(9), handle_super_block_save_error(9), vdo_save_super_block(9), vdo_save_components(9), vdo_register_read_only_listener(9), notify_vdo_of_read_only_mode(9), vdo_enable_read_only_entry(9), vdo_wait_until_not_entering_read_only_mode(9), as_notifier(9), finish_entering_read_only_mode(9), make_thread_read_only(9), vdo_allow_read_only_mode_entry(9), vdo_enter_read_only_mode(9), vdo_is_read_only(9), vdo_in_read_only_mode(9), vdo_in_recovery_mode(9), vdo_enter_recovery_mode(9), complete_synchronous_action(9), perform_synchronous_action(9), set_compression_callback(9), vdo_set_compressing(9), vdo_get_compressing(9), vdo_get_physical_blocks_allocated(9), vdo_get_physical_blocks_overhead(9), get_vdo_statistics(9), vdo_fetch_statistics_callback(9), vdo_fetch_statistics(9), vdo_get_callback_thread_id(9), vdo_dump_status(9), vdo_assert_on_admin_thread(9), vdo_assert_on_logical_zone_thread(9), vdo_assert_on_physical_zone_thread(9), vdo_get_physical_zone(9) β¨
go read them all bestie, i believe in you π«Ά
and that's the page!! brought to you live from ./drivers/md/dm-vdo, dated October 2026 β this kernel API manual page ate and left no crumbs, 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