Commit 49fd524f authored by Jens Axboe's avatar Jens Axboe
Browse files

bsg: update check for rq based driver for blk-mq



bsg currently checks ->request_fn to check whether a queue can
handle struct request. But with blk-mq, we don't have a request_fn
yet are request based. Add a queue_is_rq_based() helper and use
that in bsg, I'm guessing this is not the last place we need to
update for this. Besides, it better explains what is being
checked.

Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent fb1be433
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,7 @@ int bsg_register_queue(struct request_queue *q, struct device *parent,
	/*
	 * we need a proper transport to send commands, not a stacked device
	 */
	if (!q->request_fn)
	if (!queue_is_rq_based(q))
		return 0;

	bcd = &q->bsg_dev;
+9 −0
Original line number Diff line number Diff line
@@ -612,6 +612,15 @@ static inline void queue_flag_clear(unsigned int flag, struct request_queue *q)

#define rq_data_dir(rq)		(((rq)->cmd_flags & 1) != 0)

/*
 * Driver can handle struct request, if it either has an old style
 * request_fn defined, or is blk-mq based.
 */
static inline bool queue_is_rq_based(struct request_queue *q)
{
	return q->request_fn || q->mq_ops;
}

static inline unsigned int blk_queue_cluster(struct request_queue *q)
{
	return q->limits.cluster;