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.