vdo_make_thread(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 the thread_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 of queue_count contexts, one for each individual queue; may be NULL. so like, one lil context per queue bestie, or just NULL if 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