On Wed, Aug 23, 2017 at 02:05:35PM -0700, Bart Van Assche wrote: > Requests are unprepared and reprepared when being requeued. Avoid > that requeuing resets .jiffies_at_alloc and .retries by initializing > these two member variables from inside blk_get_request() and by > preserving both member variables when preparing a request. This patch > affects the requeuing behavior of scsi-sq and scsi-mq. > > Reported-by: Brian King <brking@xxxxxxxxxxxxxxxxxx> > References: https://lkml.org/lkml/2017/8/18/923 ("Re: [BUG][bisected 270065e] linux-next fails to boot on powerpc") > Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxx> > Cc: Brian King <brking@xxxxxxxxxxxxxxxxxx> > Cc: Hannes Reinecke <hare@xxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: Johannes Thumshirn <jthumshirn@xxxxxxx> > --- > drivers/scsi/scsi_lib.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index ebc5c713ee37..8d1ec1e7b0e2 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -1122,6 +1122,8 @@ void scsi_initialize_rq(struct request *rq) > struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq); > > scsi_req_init(&cmd->req); > + cmd->jiffies_at_alloc = jiffies; > + cmd->retries = 0; > } > EXPORT_SYMBOL(scsi_initialize_rq); How is this working for non-passthrough commands where we don't call scsi_initialize_rq?