io_submitter
struct io_submitter *submitter = vio->completion.vdo->io_submitter;
&vdo->io_submitter->bio_queue_data[vio->bio_zone];
struct io_submitter **io_submitter_ptr)
struct io_submitter *io_submitter;
result = vdo_allocate_extended(struct io_submitter, thread_count,
&io_submitter);
io_submitter->bio_queue_rotation_interval = rotation_interval;
struct bio_queue_data *bio_queue_data = &io_submitter->bio_queue_data[i];
vdo_cleanup_io_submitter(io_submitter);
vdo_free_io_submitter(io_submitter);
vdo_cleanup_io_submitter(io_submitter);
vdo_free_io_submitter(io_submitter);
io_submitter->num_bio_queues_used++;
*io_submitter_ptr = io_submitter;
void vdo_cleanup_io_submitter(struct io_submitter *io_submitter)
if (io_submitter == NULL)
for (i = io_submitter->num_bio_queues_used - 1; i >= 0; i--)
vdo_finish_work_queue(io_submitter->bio_queue_data[i].queue);
void vdo_free_io_submitter(struct io_submitter *io_submitter)
if (io_submitter == NULL)
for (i = io_submitter->num_bio_queues_used - 1; i >= 0; i--) {
io_submitter->num_bio_queues_used--;
vdo_forget(io_submitter->bio_queue_data[i].queue);
vdo_int_map_free(vdo_forget(io_submitter->bio_queue_data[i].map));
vdo_free(io_submitter);
struct io_submitter;
struct io_submitter **io_submitter);
void vdo_cleanup_io_submitter(struct io_submitter *io_submitter);
void vdo_free_io_submitter(struct io_submitter *io_submitter);
vdo, &vdo->io_submitter);
vdo_cleanup_io_submitter(vdo->io_submitter);
vdo_free_io_submitter(vdo_forget(vdo->io_submitter));
struct io_submitter *io_submitter;