On Mon, 2018-02-26 at 15:58 +0800, Jianchao Wang wrote: > In scsi core, __scsi_queue_insert should just put request back on > the queue and retry using the same command as before. However, for > blk-mq, scsi_mq_requeue_cmd is employed here which will unprepare > the request. To align with the semantics of __scsi_queue_insert, > just use blk_mq_requeue_request with kick_requeue_list == true. > > Cc: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Jianchao Wang <jianchao.w.wang@xxxxxxxxxx> > --- > drivers/scsi/scsi_lib.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index a86df9c..06d8110 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -191,7 +191,7 @@ static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, bool unbusy) > */ > cmd->result = 0; > if (q->mq_ops) { > - scsi_mq_requeue_cmd(cmd); > + blk_mq_requeue_request(cmd->request, true); > return; > } > spin_lock_irqsave(q->queue_lock, flags); I think this patch will break the code in the aacraid driver that iterates over sdev->cmd_list because commands are added to and removed from that list in the prep / unprep code. Bart.