Skip to content

Commit

Permalink
dm mpath: only use ktime_get_ns() in historical selector
Browse files Browse the repository at this point in the history
[ Upstream commit ce40426 ]

Mixing sched_clock() and ktime_get_ns() usage will give bad results.

Switch hst_select_path() from using sched_clock() to ktime_get_ns().
Also rename path_service_time()'s 'sched_now' variable to 'now'.

Fixes: 2613eab ("dm mpath: add Historical Service Time Path Selector")
Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
Khazhismel Kumykov authored and Greg Kroah-Hartman committed Apr 20, 2022
1 parent 4e166a4 commit 504c15f
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/md/dm-historical-service-time.c
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ static struct dm_path *hst_select_path(struct path_selector *ps,
{
struct selector *s = ps->context;
struct path_info *pi = NULL, *best = NULL;
u64 time_now = sched_clock();
u64 time_now = ktime_get_ns();
struct dm_path *ret = NULL;
unsigned long flags;

Expand Down Expand Up @@ -470,7 +470,7 @@ static int hst_start_io(struct path_selector *ps, struct dm_path *path,

static u64 path_service_time(struct path_info *pi, u64 start_time)
{
u64 sched_now = ktime_get_ns();
u64 now = ktime_get_ns();

/* if a previous disk request has finished after this IO was
* sent to the hardware, pretend the submission happened
Expand All @@ -479,11 +479,11 @@ static u64 path_service_time(struct path_info *pi, u64 start_time)
if (time_after64(pi->last_finish, start_time))
start_time = pi->last_finish;

pi->last_finish = sched_now;
if (time_before64(sched_now, start_time))
pi->last_finish = now;
if (time_before64(now, start_time))
return 0;

return sched_now - start_time;
return now - start_time;
}

static int hst_end_io(struct path_selector *ps, struct dm_path *path,
Expand Down

0 comments on commit 504c15f

Please sign in to comment.