[stericsson:mmc-no-NULL 34/34] include/linux/blk-mq.h:118:2: error: unknown type name 'softirq_done_fn'

kbuild test robot fengguang.wu at intel.com
Mon Feb 13 05:36:15 PST 2017


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git mmc-no-NULL
head:   c8140f7069d2f17882ea16e78265b7e31c4b5e45
commit: c8140f7069d2f17882ea16e78265b7e31c4b5e45 [34/34] RFC: mmc: switch MMC/SD to use blk-mq multiqueueing v3
config: x86_64-randconfig-x017-201707 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        git checkout c8140f7069d2f17882ea16e78265b7e31c4b5e45
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from drivers/mmc/core/queue.h:7:0,
                    from drivers/mmc/core/core.c:42:
>> include/linux/blk-mq.h:118:2: error: unknown type name 'softirq_done_fn'
     softirq_done_fn  *complete;
     ^~~~~~~~~~~~~~~
   include/linux/blk-mq.h: In function 'blk_mq_rq_from_pdu':
>> include/linux/blk-mq.h:254:22: error: invalid application of 'sizeof' to incomplete type 'struct request'
     return pdu - sizeof(struct request);
                         ^~~~~~
   include/linux/blk-mq.h: In function 'blk_mq_rq_to_pdu':
>> include/linux/blk-mq.h:258:2: error: invalid use of undefined type 'struct request'
     return rq + 1;
     ^~~~~~
   In file included from include/linux/writeback.h:12:0,
                    from include/linux/memcontrol.h:30,
                    from include/linux/swap.h:8,
                    from include/linux/suspend.h:4,
                    from drivers/mmc/core/core.c:27:
   drivers/mmc/core/queue.h: In function 'mmc_req_is_special':
   include/linux/blk_types.h:209:8: error: dereferencing pointer to incomplete type 'struct request'
     ((req)->cmd_flags & REQ_OP_MASK)
           ^
   drivers/mmc/core/queue.h:14:4: note: in expansion of macro 'req_op'
      (req_op(req) == REQ_OP_FLUSH ||
       ^~~~~~

vim +/softirq_done_fn +118 include/linux/blk-mq.h

320ae51f Jens Axboe        2013-10-24  112  
05229bee Jens Axboe        2015-11-05  113  	/*
05229bee Jens Axboe        2015-11-05  114  	 * Called to poll for completion of a specific tag.
05229bee Jens Axboe        2015-11-05  115  	 */
05229bee Jens Axboe        2015-11-05  116  	poll_fn			*poll;
05229bee Jens Axboe        2015-11-05  117  
30a91cb4 Christoph Hellwig 2014-02-10 @118  	softirq_done_fn		*complete;
30a91cb4 Christoph Hellwig 2014-02-10  119  
320ae51f Jens Axboe        2013-10-24  120  	/*
320ae51f Jens Axboe        2013-10-24  121  	 * Called when the block layer side of a hardware queue has been
320ae51f Jens Axboe        2013-10-24  122  	 * set up, allowing the driver to allocate/init matching structures.
320ae51f Jens Axboe        2013-10-24  123  	 * Ditto for exit/teardown.
320ae51f Jens Axboe        2013-10-24  124  	 */
320ae51f Jens Axboe        2013-10-24  125  	init_hctx_fn		*init_hctx;
320ae51f Jens Axboe        2013-10-24  126  	exit_hctx_fn		*exit_hctx;
e9b267d9 Christoph Hellwig 2014-04-15  127  
e9b267d9 Christoph Hellwig 2014-04-15  128  	/*
e9b267d9 Christoph Hellwig 2014-04-15  129  	 * Called for every command allocated by the block layer to allow
e9b267d9 Christoph Hellwig 2014-04-15  130  	 * the driver to set up driver specific data.
f70ced09 Ming Lei          2014-09-25  131  	 *
f70ced09 Ming Lei          2014-09-25  132  	 * Tag greater than or equal to queue_depth is for setting up
f70ced09 Ming Lei          2014-09-25  133  	 * flush request.
f70ced09 Ming Lei          2014-09-25  134  	 *
e9b267d9 Christoph Hellwig 2014-04-15  135  	 * Ditto for exit/teardown.
e9b267d9 Christoph Hellwig 2014-04-15  136  	 */
e9b267d9 Christoph Hellwig 2014-04-15  137  	init_request_fn		*init_request;
e9b267d9 Christoph Hellwig 2014-04-15  138  	exit_request_fn		*exit_request;
486cf989 Sagi Grimberg     2016-07-06  139  	reinit_request_fn	*reinit_request;
da695ba2 Christoph Hellwig 2016-09-14  140  
da695ba2 Christoph Hellwig 2016-09-14  141  	map_queues_fn		*map_queues;
320ae51f Jens Axboe        2013-10-24  142  };
320ae51f Jens Axboe        2013-10-24  143  
320ae51f Jens Axboe        2013-10-24  144  enum {
320ae51f Jens Axboe        2013-10-24  145  	BLK_MQ_RQ_QUEUE_OK	= 0,	/* queued fine */
320ae51f Jens Axboe        2013-10-24  146  	BLK_MQ_RQ_QUEUE_BUSY	= 1,	/* requeue IO for later */
320ae51f Jens Axboe        2013-10-24  147  	BLK_MQ_RQ_QUEUE_ERROR	= 2,	/* end IO with error */
320ae51f Jens Axboe        2013-10-24  148  
320ae51f Jens Axboe        2013-10-24  149  	BLK_MQ_F_SHOULD_MERGE	= 1 << 0,
8a58d1f1 Jens Axboe        2014-08-15  150  	BLK_MQ_F_TAG_SHARED	= 1 << 1,
8a58d1f1 Jens Axboe        2014-08-15  151  	BLK_MQ_F_SG_MERGE	= 1 << 2,
e167dfb5 Jens Axboe        2014-10-29  152  	BLK_MQ_F_DEFER_ISSUE	= 1 << 4,
1b792f2f Jens Axboe        2016-09-21  153  	BLK_MQ_F_BLOCKING	= 1 << 5,
24391c0d Shaohua Li        2015-01-23  154  	BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
24391c0d Shaohua Li        2015-01-23  155  	BLK_MQ_F_ALLOC_POLICY_BITS = 1,
320ae51f Jens Axboe        2013-10-24  156  
5d12f905 Jens Axboe        2014-03-19  157  	BLK_MQ_S_STOPPED	= 0,
0d2602ca Jens Axboe        2014-05-13  158  	BLK_MQ_S_TAG_ACTIVE	= 1,
320ae51f Jens Axboe        2013-10-24  159  
a4391c64 Jens Axboe        2014-06-05  160  	BLK_MQ_MAX_DEPTH	= 10240,
506e931f Jens Axboe        2014-05-07  161  
506e931f Jens Axboe        2014-05-07  162  	BLK_MQ_CPU_WORK_BATCH	= 8,
320ae51f Jens Axboe        2013-10-24  163  };
24391c0d Shaohua Li        2015-01-23  164  #define BLK_MQ_FLAG_TO_ALLOC_POLICY(flags) \
24391c0d Shaohua Li        2015-01-23  165  	((flags >> BLK_MQ_F_ALLOC_POLICY_START_BIT) & \
24391c0d Shaohua Li        2015-01-23  166  		((1 << BLK_MQ_F_ALLOC_POLICY_BITS) - 1))
24391c0d Shaohua Li        2015-01-23  167  #define BLK_ALLOC_POLICY_TO_MQ_FLAG(policy) \
24391c0d Shaohua Li        2015-01-23  168  	((policy & ((1 << BLK_MQ_F_ALLOC_POLICY_BITS) - 1)) \
24391c0d Shaohua Li        2015-01-23  169  		<< BLK_MQ_F_ALLOC_POLICY_START_BIT)
320ae51f Jens Axboe        2013-10-24  170  
24d2f903 Christoph Hellwig 2014-04-15  171  struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *);
b62c21b7 Mike Snitzer      2015-03-12  172  struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
b62c21b7 Mike Snitzer      2015-03-12  173  						  struct request_queue *q);
b21d5b30 Matias Bjørling   2016-09-16  174  int blk_mq_register_dev(struct device *, struct request_queue *);
b21d5b30 Matias Bjørling   2016-09-16  175  void blk_mq_unregister_dev(struct device *, struct request_queue *);
320ae51f Jens Axboe        2013-10-24  176  
24d2f903 Christoph Hellwig 2014-04-15  177  int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set);
24d2f903 Christoph Hellwig 2014-04-15  178  void blk_mq_free_tag_set(struct blk_mq_tag_set *set);
24d2f903 Christoph Hellwig 2014-04-15  179  
320ae51f Jens Axboe        2013-10-24  180  void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule);
320ae51f Jens Axboe        2013-10-24  181  
feb71dae Christoph Hellwig 2014-02-20  182  void blk_mq_insert_request(struct request *, bool, bool, bool);
320ae51f Jens Axboe        2013-10-24  183  void blk_mq_free_request(struct request *rq);
7c7f2f2b Jens Axboe        2014-11-17  184  void blk_mq_free_hctx_request(struct blk_mq_hw_ctx *, struct request *rq);
320ae51f Jens Axboe        2013-10-24  185  bool blk_mq_can_queue(struct blk_mq_hw_ctx *);
6f3b0e8b Christoph Hellwig 2015-11-26  186  
6f3b0e8b Christoph Hellwig 2015-11-26  187  enum {
6f3b0e8b Christoph Hellwig 2015-11-26  188  	BLK_MQ_REQ_NOWAIT	= (1 << 0), /* return when out of requests */
6f3b0e8b Christoph Hellwig 2015-11-26  189  	BLK_MQ_REQ_RESERVED	= (1 << 1), /* allocate from reserved pool */
6f3b0e8b Christoph Hellwig 2015-11-26  190  };
6f3b0e8b Christoph Hellwig 2015-11-26  191  
4ce01dd1 Christoph Hellwig 2014-05-27  192  struct request *blk_mq_alloc_request(struct request_queue *q, int rw,
6f3b0e8b Christoph Hellwig 2015-11-26  193  		unsigned int flags);
1f5bd336 Ming Lin          2016-06-13  194  struct request *blk_mq_alloc_request_hctx(struct request_queue *q, int op,
1f5bd336 Ming Lin          2016-06-13  195  		unsigned int flags, unsigned int hctx_idx);
0e62f51f Jens Axboe        2014-06-04  196  struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag);
320ae51f Jens Axboe        2013-10-24  197  
205fb5f5 Bart Van Assche   2014-10-30  198  enum {
205fb5f5 Bart Van Assche   2014-10-30  199  	BLK_MQ_UNIQUE_TAG_BITS = 16,
205fb5f5 Bart Van Assche   2014-10-30  200  	BLK_MQ_UNIQUE_TAG_MASK = (1 << BLK_MQ_UNIQUE_TAG_BITS) - 1,
205fb5f5 Bart Van Assche   2014-10-30  201  };
205fb5f5 Bart Van Assche   2014-10-30  202  
205fb5f5 Bart Van Assche   2014-10-30  203  u32 blk_mq_unique_tag(struct request *rq);
205fb5f5 Bart Van Assche   2014-10-30  204  
205fb5f5 Bart Van Assche   2014-10-30  205  static inline u16 blk_mq_unique_tag_to_hwq(u32 unique_tag)
205fb5f5 Bart Van Assche   2014-10-30  206  {
205fb5f5 Bart Van Assche   2014-10-30  207  	return unique_tag >> BLK_MQ_UNIQUE_TAG_BITS;
205fb5f5 Bart Van Assche   2014-10-30  208  }
205fb5f5 Bart Van Assche   2014-10-30  209  
205fb5f5 Bart Van Assche   2014-10-30  210  static inline u16 blk_mq_unique_tag_to_tag(u32 unique_tag)
205fb5f5 Bart Van Assche   2014-10-30  211  {
205fb5f5 Bart Van Assche   2014-10-30  212  	return unique_tag & BLK_MQ_UNIQUE_TAG_MASK;
205fb5f5 Bart Van Assche   2014-10-30  213  }
205fb5f5 Bart Van Assche   2014-10-30  214  
320ae51f Jens Axboe        2013-10-24  215  
973c0191 Keith Busch       2015-01-07  216  int blk_mq_request_started(struct request *rq);
e2490073 Christoph Hellwig 2014-09-13  217  void blk_mq_start_request(struct request *rq);
c8a446ad Christoph Hellwig 2014-09-13  218  void blk_mq_end_request(struct request *rq, int error);
c8a446ad Christoph Hellwig 2014-09-13  219  void __blk_mq_end_request(struct request *rq, int error);
320ae51f Jens Axboe        2013-10-24  220  
2b053aca Bart Van Assche   2016-10-28  221  void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list);
2b053aca Bart Van Assche   2016-10-28  222  void blk_mq_add_to_requeue_list(struct request *rq, bool at_head,
2b053aca Bart Van Assche   2016-10-28  223  				bool kick_requeue_list);
6fca6a61 Christoph Hellwig 2014-05-28  224  void blk_mq_kick_requeue_list(struct request_queue *q);
2849450a Mike Snitzer      2016-09-14  225  void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
1885b24d Jens Axboe        2015-01-07  226  void blk_mq_abort_requeue_list(struct request_queue *q);
f4829a9b Christoph Hellwig 2015-09-27  227  void blk_mq_complete_request(struct request *rq, int error);
30a91cb4 Christoph Hellwig 2014-02-10  228  
fd001443 Bart Van Assche   2016-10-28  229  bool blk_mq_queue_stopped(struct request_queue *q);
320ae51f Jens Axboe        2013-10-24  230  void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx);
320ae51f Jens Axboe        2013-10-24  231  void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx);
280d45f6 Christoph Hellwig 2013-10-25  232  void blk_mq_stop_hw_queues(struct request_queue *q);
2f268556 Christoph Hellwig 2014-04-16  233  void blk_mq_start_hw_queues(struct request_queue *q);
ae911c5e Jens Axboe        2016-12-08  234  void blk_mq_start_stopped_hw_queue(struct blk_mq_hw_ctx *hctx, bool async);
1b4a3258 Christoph Hellwig 2014-04-16  235  void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async);
b94ec296 Mike Snitzer      2015-03-11  236  void blk_mq_run_hw_queues(struct request_queue *q, bool async);
70f4db63 Christoph Hellwig 2014-04-16  237  void blk_mq_delay_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs);
e0489487 Sagi Grimberg     2016-03-10  238  void blk_mq_tagset_busy_iter(struct blk_mq_tag_set *tagset,
e0489487 Sagi Grimberg     2016-03-10  239  		busy_tag_iter_fn *fn, void *priv);
c761d96b Jens Axboe        2015-01-02  240  void blk_mq_freeze_queue(struct request_queue *q);
b4c6a028 Keith Busch       2014-12-19  241  void blk_mq_unfreeze_queue(struct request_queue *q);
b4c6a028 Keith Busch       2014-12-19  242  void blk_mq_freeze_queue_start(struct request_queue *q);
486cf989 Sagi Grimberg     2016-07-06  243  int blk_mq_reinit_tagset(struct blk_mq_tag_set *set);
320ae51f Jens Axboe        2013-10-24  244  
9e5a7e22 Christoph Hellwig 2016-11-01  245  int blk_mq_map_queues(struct blk_mq_tag_set *set);
868f2f0b Keith Busch       2015-12-17  246  void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
868f2f0b Keith Busch       2015-12-17  247  
320ae51f Jens Axboe        2013-10-24  248  /*
320ae51f Jens Axboe        2013-10-24  249   * Driver command data is immediately after the request. So subtract request
2963e3f7 Jens Axboe        2015-04-09  250   * size to get back to the original request, add request size to get the PDU.
320ae51f Jens Axboe        2013-10-24  251   */
320ae51f Jens Axboe        2013-10-24  252  static inline struct request *blk_mq_rq_from_pdu(void *pdu)
320ae51f Jens Axboe        2013-10-24  253  {
320ae51f Jens Axboe        2013-10-24 @254  	return pdu - sizeof(struct request);
320ae51f Jens Axboe        2013-10-24  255  }
320ae51f Jens Axboe        2013-10-24  256  static inline void *blk_mq_rq_to_pdu(struct request *rq)
320ae51f Jens Axboe        2013-10-24  257  {
2963e3f7 Jens Axboe        2015-04-09 @258  	return rq + 1;
320ae51f Jens Axboe        2013-10-24  259  }
320ae51f Jens Axboe        2013-10-24  260  
320ae51f Jens Axboe        2013-10-24  261  #define queue_for_each_hw_ctx(q, hctx, i)				\

:::::: The code at line 118 was first introduced by commit
:::::: 30a91cb4ef385fe1b260df204ef314d86fff2850 blk-mq: rework I/O completions

:::::: TO: Christoph Hellwig <hch at infradead.org>
:::::: CC: Jens Axboe <axboe at fb.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 26596 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170213/adbfeac1/attachment-0001.gz>


More information about the linux-arm-kernel mailing list