Message ID | 1655463320-241202-2-git-send-email-john.garry@huawei.com |
---|---|
State | New |
Headers | show |
Series | blk-mq: Add a flag for reserved requests series | expand |
On Fri, Jun 17, 2022 at 06:55:16PM +0800, John Garry wrote: > The SCSI code does not currently support reserved commands. As such, > requests which time-out would never be reserved, and scsi_timeout() > 'reserved' arg should never be set. > > Remove handling for reserved requests and drop wrapper scsi_timeout() as > it now just calls scsi_times_out() always. Please rename scsi_times_out to scsi_timeout so it still matches the method name. Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
On 20/06/2022 06:58, Christoph Hellwig wrote: > On Fri, Jun 17, 2022 at 06:55:16PM +0800, John Garry wrote: >> The SCSI code does not currently support reserved commands. As such, >> requests which time-out would never be reserved, and scsi_timeout() >> 'reserved' arg should never be set. >> >> Remove handling for reserved requests and drop wrapper scsi_timeout() as >> it now just calls scsi_times_out() always. > > Please rename scsi_times_out to scsi_timeout so it still matches the > method name. > ok, note that some code comments and Documentation reference scsi_times_out() so I will need to fix them up also. > Otherwise looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> > > . Cheers, John
On 6/17/22 12:55, John Garry wrote: > The SCSI code does not currently support reserved commands. As such, > requests which time-out would never be reserved, and scsi_timeout() > 'reserved' arg should never be set. > > Remove handling for reserved requests and drop wrapper scsi_timeout() as > it now just calls scsi_times_out() always. > > Signed-off-by: John Garry <john.garry@huawei.com> > --- > drivers/scsi/scsi_error.c | 3 ++- > drivers/scsi/scsi_lib.c | 12 ++---------- > drivers/scsi/scsi_priv.h | 3 ++- > 3 files changed, 6 insertions(+), 12 deletions(-) > Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 49ef864df581..80cd6835ac70 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -318,6 +318,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd) /** * scsi_times_out - Timeout function for normal scsi commands. * @req: request that is timing out. + * @reserved: whether the request is a reserved request. * * Notes: * We do not need to lock this. There is the potential for a race @@ -325,7 +326,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd) * normal completion function determines that the timer has already * fired, then it mustn't do anything. */ -enum blk_eh_timer_return scsi_times_out(struct request *req) +enum blk_eh_timer_return scsi_times_out(struct request *req, bool reserved) { struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); enum blk_eh_timer_return rtn = BLK_EH_DONE; diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 6ffc9e4258a8..d635831165d5 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1790,14 +1790,6 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx, return ret; } -static enum blk_eh_timer_return scsi_timeout(struct request *req, - bool reserved) -{ - if (reserved) - return BLK_EH_RESET_TIMER; - return scsi_times_out(req); -} - static int scsi_mq_init_request(struct blk_mq_tag_set *set, struct request *rq, unsigned int hctx_idx, unsigned int numa_node) { @@ -1912,7 +1904,7 @@ static const struct blk_mq_ops scsi_mq_ops_no_commit = { .put_budget = scsi_mq_put_budget, .queue_rq = scsi_queue_rq, .complete = scsi_complete, - .timeout = scsi_timeout, + .timeout = scsi_times_out, #ifdef CONFIG_BLK_DEBUG_FS .show_rq = scsi_show_rq, #endif @@ -1941,7 +1933,7 @@ static const struct blk_mq_ops scsi_mq_ops = { .queue_rq = scsi_queue_rq, .commit_rqs = scsi_commit_rqs, .complete = scsi_complete, - .timeout = scsi_timeout, + .timeout = scsi_times_out, #ifdef CONFIG_BLK_DEBUG_FS .show_rq = scsi_show_rq, #endif diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h index 5c4786310a31..8966f20b7d55 100644 --- a/drivers/scsi/scsi_priv.h +++ b/drivers/scsi/scsi_priv.h @@ -72,7 +72,8 @@ extern void scsi_exit_devinfo(void); /* scsi_error.c */ extern void scmd_eh_abort_handler(struct work_struct *work); -extern enum blk_eh_timer_return scsi_times_out(struct request *req); +extern enum blk_eh_timer_return scsi_times_out(struct request *req, + bool reserved); extern int scsi_error_handler(void *host); extern enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *cmd); extern void scsi_eh_wakeup(struct Scsi_Host *shost);
The SCSI code does not currently support reserved commands. As such, requests which time-out would never be reserved, and scsi_timeout() 'reserved' arg should never be set. Remove handling for reserved requests and drop wrapper scsi_timeout() as it now just calls scsi_times_out() always. Signed-off-by: John Garry <john.garry@huawei.com> --- drivers/scsi/scsi_error.c | 3 ++- drivers/scsi/scsi_lib.c | 12 ++---------- drivers/scsi/scsi_priv.h | 3 ++- 3 files changed, 6 insertions(+), 12 deletions(-)