Blame view

block/blk-mq.h 1.49 KB
320ae51fe   Jens Axboe   blk-mq: new multi...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  #ifndef INT_BLK_MQ_H
  #define INT_BLK_MQ_H
  
  struct blk_mq_ctx {
  	struct {
  		spinlock_t		lock;
  		struct list_head	rq_list;
  	}  ____cacheline_aligned_in_smp;
  
  	unsigned int		cpu;
  	unsigned int		index_hw;
  	unsigned int		ipi_redirect;
  
  	/* incremented at dispatch time */
  	unsigned long		rq_dispatched[2];
  	unsigned long		rq_merged;
  
  	/* incremented at completion time */
  	unsigned long		____cacheline_aligned_in_smp rq_completed[2];
  
  	struct request_queue	*queue;
  	struct kobject		kobj;
  };
30a91cb4e   Christoph Hellwig   blk-mq: rework I/...
24
  void __blk_mq_complete_request(struct request *rq);
320ae51fe   Jens Axboe   blk-mq: new multi...
25
26
  void blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async);
  void blk_mq_init_flush(struct request_queue *q);
43a5e4e21   Ming Lei   block: blk-mq: su...
27
  void blk_mq_drain_queue(struct request_queue *q);
3edcc0ce8   Ming Lei   block: blk-mq: do...
28
  void blk_mq_free_queue(struct request_queue *q);
18741986a   Christoph Hellwig   blk-mq: rework fl...
29
  void blk_mq_rq_init(struct blk_mq_hw_ctx *hctx, struct request *rq);
320ae51fe   Jens Axboe   blk-mq: new multi...
30
31
32
33
34
35
36
37
38
39
40
  
  /*
   * CPU hotplug helpers
   */
  struct blk_mq_cpu_notifier;
  void blk_mq_init_cpu_notifier(struct blk_mq_cpu_notifier *notifier,
  			      void (*fn)(void *, unsigned long, unsigned int),
  			      void *data);
  void blk_mq_register_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
  void blk_mq_unregister_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
  void blk_mq_cpu_init(void);
676141e48   Jens Axboe   blk-mq: don't dum...
41
42
  void blk_mq_enable_hotplug(void);
  void blk_mq_disable_hotplug(void);
320ae51fe   Jens Axboe   blk-mq: new multi...
43
44
45
46
47
48
49
50
51
52
53
  
  /*
   * CPU -> queue mappings
   */
  struct blk_mq_reg;
  extern unsigned int *blk_mq_make_queue_map(struct blk_mq_reg *reg);
  extern int blk_mq_update_queue_map(unsigned int *map, unsigned int nr_queues);
  
  void blk_mq_add_timer(struct request *rq);
  
  #endif