Lines Matching +full:multi +full:- +full:threaded

1 // SPDX-License-Identifier: GPL-2.0-only
13 #include "status-codes.h"
27 * At each step of a multi-threaded operation, the completion performing the operation is given a
43 * is next run. It is a bug to attempt to set the result or re-finish a finished completion.
46 * programming errors. It can not be used for cross-thread checking on the status of an operation.
56 completion->vdo = vdo; in vdo_initialize_completion()
57 completion->type = type; in vdo_initialize_completion()
63 VDO_ASSERT_LOG_ONLY(!completion->complete, "completion is not complete"); in assert_incomplete()
67 * vdo_set_completion_result() - Set the result of a completion.
74 if (completion->result == VDO_SUCCESS) in vdo_set_completion_result()
75 completion->result = result; in vdo_set_completion_result()
79 * vdo_launch_completion_with_priority() - Run or enqueue a completion.
89 thread_id_t callback_thread = completion->callback_thread_id; in vdo_launch_completion_with_priority()
91 if (completion->requeue || (callback_thread != vdo_get_callback_thread_id())) { in vdo_launch_completion_with_priority()
99 /** vdo_finish_completion() - Mark a completion as complete and then launch it. */
103 completion->complete = true; in vdo_finish_completion()
104 if (completion->callback != NULL) in vdo_finish_completion()
111 struct vdo *vdo = completion->vdo; in vdo_enqueue_completion()
112 thread_id_t thread_id = completion->callback_thread_id; in vdo_enqueue_completion()
114 if (VDO_ASSERT(thread_id < vdo->thread_config.thread_count, in vdo_enqueue_completion()
116 thread_id, completion->type, in vdo_enqueue_completion()
117 vdo->thread_config.thread_count) != VDO_SUCCESS) in vdo_enqueue_completion()
120 completion->requeue = false; in vdo_enqueue_completion()
121 completion->priority = priority; in vdo_enqueue_completion()
122 completion->my_queue = NULL; in vdo_enqueue_completion()
123 vdo_enqueue_work_queue(vdo->threads[thread_id].queue, completion); in vdo_enqueue_completion()
127 * vdo_requeue_completion_if_needed() - Requeue a completion if not called on the specified thread.
137 completion->callback_thread_id = callback_thread_id; in vdo_requeue_completion_if_needed()