xref: /linux/drivers/md/dm-rq.h (revision 2b64b2ed277ff23e785fbdb65098ee7e1252d64f)
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