Re: [PATCH] scsi: core: use blk_mq_requeue_request in __scsi_queue_insert

From: Bart Van Assche
Date: Mon Feb 26 2018 - 22:41:40 EST


On Tue, 2018-02-27 at 11:28 +0800, jianchao.wang wrote:
> If that is true, what if aacraid driver uses block legacy instead of blk-mq ?
> w/ blk-mq disabled, __scsi_queue_insert just requeue the request with blk_requeue_request.
>
> __scsi_queue_insert
> ...
> if (q->mq_ops) {
> scsi_mq_requeue_cmd(cmd);
> return;
> }
> spin_lock_irqsave(q->queue_lock, flags);
> blk_requeue_request(q, cmd->request);
> kblockd_schedule_work(&device->requeue_work);
> spin_unlock_irqrestore(q->queue_lock, flags);
> ...
>
> no prep/unprep code there for block legacy code.

Hello Jianchao,

For the legacy block layer preparing and unpreparing a request happens from
inside the block layer core. Please have a look at block/blk-core.c and the
code in that file that handles the request flag RQF_DONTPREP.

Thanks,

Bart.