* [PATCH] scsi_debug: iopoll: fix cmd duration calc
@ 2021-03-04 1:41 Douglas Gilbert
2021-03-04 3:28 ` Martin K. Petersen
0 siblings, 1 reply; 2+ messages in thread
From: Douglas Gilbert @ 2021-03-04 1:41 UTC (permalink / raw)
To: linux-scsi; +Cc: martin.petersen, jejb, hare, kashyap.desai
In some cases, sdebug_defer::cmpl_ts (completion timestamp) wasn't
being properly set when REQ_HIPRI was given. Fix that and improve
code to only call ktime_get_boottime_ns() for commands with
REQ_HIPRI set as cmpl_ts is only used in that case.
Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
---
This patch is a correction on top off this patchset:
[PATCH v4 0/5] io_uring iopoll in scsi layer
by Kashyap Desai sent to the linux-scsi list on 20210215
drivers/scsi/scsi_debug.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index c50de49a2c2f..0eb2dd445d5c 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -5367,6 +5367,7 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip,
{
bool new_sd_dp;
bool inject = false;
+ bool hipri = (cmnd->request->cmd_flags & REQ_HIPRI);
int k, num_in_q, qdepth;
unsigned long iflags;
u64 ns_from_boot = 0;
@@ -5453,7 +5454,7 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip,
if (sdebug_host_max_queue)
sd_dp->hc_idx = get_tag(cmnd);
- if (ndelay > 0 && ndelay < INCLUSIVE_TIMING_MAX_NS)
+ if (hipri)
ns_from_boot = ktime_get_boottime_ns();
/* one of the resp_*() response functions is called here */
@@ -5513,8 +5514,8 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip,
kt -= d;
}
}
- sd_dp->cmpl_ts = ktime_add(ns_to_ktime(ns_from_boot), kt);
- if (cmnd->request->cmd_flags & REQ_HIPRI) {
+ if (hipri) {
+ sd_dp->cmpl_ts = ktime_add(ns_to_ktime(ns_from_boot), kt);
spin_lock_irqsave(&sqp->qc_lock, iflags);
if (!sd_dp->init_poll) {
sd_dp->init_poll = true;
@@ -5544,8 +5545,8 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip,
if (unlikely((sdebug_opts & SDEBUG_OPT_CMD_ABORT) &&
atomic_read(&sdeb_inject_pending)))
sd_dp->aborted = true;
- sd_dp->cmpl_ts = ns_to_ktime(ns_from_boot);
- if (cmnd->request->cmd_flags & REQ_HIPRI) {
+ if (hipri) {
+ sd_dp->cmpl_ts = ns_to_ktime(ns_from_boot);
spin_lock_irqsave(&sqp->qc_lock, iflags);
if (!sd_dp->init_poll) {
sd_dp->init_poll = true;
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] scsi_debug: iopoll: fix cmd duration calc
2021-03-04 1:41 [PATCH] scsi_debug: iopoll: fix cmd duration calc Douglas Gilbert
@ 2021-03-04 3:28 ` Martin K. Petersen
0 siblings, 0 replies; 2+ messages in thread
From: Martin K. Petersen @ 2021-03-04 3:28 UTC (permalink / raw)
To: Douglas Gilbert; +Cc: linux-scsi, martin.petersen, jejb, hare, kashyap.desai
Douglas,
> In some cases, sdebug_defer::cmpl_ts (completion timestamp) wasn't
> being properly set when REQ_HIPRI was given. Fix that and improve code
> to only call ktime_get_boottime_ns() for commands with REQ_HIPRI set
> as cmpl_ts is only used in that case.
Applied to 5.13/scsi-staging, thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-03-04 3:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-04 1:41 [PATCH] scsi_debug: iopoll: fix cmd duration calc Douglas Gilbert
2021-03-04 3:28 ` Martin K. Petersen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.