xref: /kernel/linux/linux-6.6/drivers/md/dm-rq.h (revision 62306a36)
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