1 /* 2 * Internal header file for device mapper 3 * 4 * Copyright (C) 2016 Red Hat, Inc. All rights reserved. 5 * 6 * This file is released under the LGPL. 7 */ 8 9 #ifndef DM_RQ_INTERNAL_H 10 #define DM_RQ_INTERNAL_H 11 12 #include <linux/bio.h> 13 #include <linux/kthread.h> 14 15 #include "dm-stats.h" 16 17 struct mapped_device; 18 19 /* 20 * For request-based dm - the bio clones we allocate are embedded in these 21 * structs. 22 * 23 * We allocate these with bio_alloc_bioset, using the front_pad parameter when 24 * the bioset is created - this means the bio has to come at the end of the 25 * struct. 26 */ 27 struct dm_rq_clone_bio_info { 28 struct bio *orig; 29 struct dm_rq_target_io *tio; 30 struct bio clone; 31 }; 32 33 int dm_mq_init_request_queue(struct mapped_device *md, struct dm_table *t); 34 void dm_mq_cleanup_mapped_device(struct mapped_device *md); 35 36 void dm_start_queue(struct request_queue *q); 37 void dm_stop_queue(struct request_queue *q); 38 39 void dm_mq_kick_requeue_list(struct mapped_device *md); 40 41 unsigned dm_get_reserved_rq_based_ios(void); 42 43 ssize_t dm_attr_rq_based_seq_io_merge_deadline_show(struct mapped_device *md, char *buf); 44 ssize_t dm_attr_rq_based_seq_io_merge_deadline_store(struct mapped_device *md, 45 const char *buf, size_t count); 46 47 #endif 48