diff options
Diffstat (limited to 'mm/damon/ops-common.c')
| -rw-r--r-- | mm/damon/ops-common.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index c3e4c871b0bb..5c93ef2bb8a9 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -117,9 +117,12 @@ int damon_hot_score(struct damon_ctx *c, struct damon_region *r, damon_max_nr_accesses(&c->attrs); age_in_sec = (unsigned long)r->age * c->attrs.aggr_interval / 1000000; - for (age_in_log = 0; age_in_log < DAMON_MAX_AGE_IN_LOG && age_in_sec; - age_in_log++, age_in_sec >>= 1) - ; + if (age_in_sec) + age_in_log = min_t(int, ilog2(age_in_sec) + 1, + DAMON_MAX_AGE_IN_LOG); + else + age_in_log = 0; + /* If frequency is 0, higher age means it's colder */ if (freq_subscore == 0) |
