162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Internal header file for device mapper 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2016 Red Hat, Inc. All rights reserved. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This file is released under the LGPL. 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef DM_RQ_INTERNAL_H 1162306a36Sopenharmony_ci#define DM_RQ_INTERNAL_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/bio.h> 1462306a36Sopenharmony_ci#include <linux/kthread.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include "dm-stats.h" 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct mapped_device; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* 2162306a36Sopenharmony_ci * For request-based dm - the bio clones we allocate are embedded in these 2262306a36Sopenharmony_ci * structs. 2362306a36Sopenharmony_ci * 2462306a36Sopenharmony_ci * We allocate these with bio_alloc_bioset, using the front_pad parameter when 2562306a36Sopenharmony_ci * the bioset is created - this means the bio has to come at the end of the 2662306a36Sopenharmony_ci * struct. 2762306a36Sopenharmony_ci */ 2862306a36Sopenharmony_cistruct dm_rq_clone_bio_info { 2962306a36Sopenharmony_ci struct bio *orig; 3062306a36Sopenharmony_ci struct dm_rq_target_io *tio; 3162306a36Sopenharmony_ci struct bio clone; 3262306a36Sopenharmony_ci}; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciint dm_mq_init_request_queue(struct mapped_device *md, struct dm_table *t); 3562306a36Sopenharmony_civoid dm_mq_cleanup_mapped_device(struct mapped_device *md); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_civoid dm_start_queue(struct request_queue *q); 3862306a36Sopenharmony_civoid dm_stop_queue(struct request_queue *q); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_civoid dm_mq_kick_requeue_list(struct mapped_device *md); 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciunsigned int dm_get_reserved_rq_based_ios(void); 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_cissize_t dm_attr_rq_based_seq_io_merge_deadline_show(struct mapped_device *md, char *buf); 4562306a36Sopenharmony_cissize_t dm_attr_rq_based_seq_io_merge_deadline_store(struct mapped_device *md, 4662306a36Sopenharmony_ci const char *buf, size_t count); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#endif 49