On Thu, 2017-08-24 at 14:09 +0200, Christoph Hellwig wrote: > 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? Hello Christoph, Commit ca18d6f769d2 ("block: Make most scsi_req_init() calls implicit") introduced the scsi_initialize_rq() function in such a way that it is not only called for pass-through requests but also for FS requests. Because that commit sets .initialize_rq_fn for both blk-sq and blk-mq blk_get_request() now calls scsi_initialize_rq() for all SCSI requests. Or did I perhaps overlook something? Bart.