Commit 80018a9e authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Greg Kroah-Hartman

staging/lustre: use 64-bit times in ptlrpc_enc_page_pool

ptlrpc_enc_page_pool computes time deltas using 'long' values from
get_seconds(). This is probably safe beyond y2038, but it's better
to go use monotonic times and 64-bit here for consistency.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d9f79e6b
...@@ -92,8 +92,8 @@ static struct ptlrpc_enc_page_pool { ...@@ -92,8 +92,8 @@ static struct ptlrpc_enc_page_pool {
unsigned long epp_idle_idx; unsigned long epp_idle_idx;
/* last shrink time due to mem tight */ /* last shrink time due to mem tight */
long epp_last_shrink; time64_t epp_last_shrink;
long epp_last_access; time64_t epp_last_access;
/* /*
* in-pool pages bookkeeping * in-pool pages bookkeeping
...@@ -153,8 +153,8 @@ int sptlrpc_proc_enc_pool_seq_show(struct seq_file *m, void *v) ...@@ -153,8 +153,8 @@ int sptlrpc_proc_enc_pool_seq_show(struct seq_file *m, void *v)
page_pools.epp_total_pages, page_pools.epp_total_pages,
page_pools.epp_free_pages, page_pools.epp_free_pages,
page_pools.epp_idle_idx, page_pools.epp_idle_idx,
get_seconds() - page_pools.epp_last_shrink, (long)(ktime_get_seconds() - page_pools.epp_last_shrink),
get_seconds() - page_pools.epp_last_access, (long)(ktime_get_seconds() - page_pools.epp_last_access),
page_pools.epp_st_max_pages, page_pools.epp_st_max_pages,
page_pools.epp_st_grows, page_pools.epp_st_grows,
page_pools.epp_st_grow_fails, page_pools.epp_st_grow_fails,
...@@ -226,7 +226,7 @@ static unsigned long enc_pools_shrink_count(struct shrinker *s, ...@@ -226,7 +226,7 @@ static unsigned long enc_pools_shrink_count(struct shrinker *s,
* if no pool access for a long time, we consider it's fully idle. * if no pool access for a long time, we consider it's fully idle.
* a little race here is fine. * a little race here is fine.
*/ */
if (unlikely(get_seconds() - page_pools.epp_last_access > if (unlikely(ktime_get_seconds() - page_pools.epp_last_access >
CACHE_QUIESCENT_PERIOD)) { CACHE_QUIESCENT_PERIOD)) {
spin_lock(&page_pools.epp_lock); spin_lock(&page_pools.epp_lock);
page_pools.epp_idle_idx = IDLE_IDX_MAX; page_pools.epp_idle_idx = IDLE_IDX_MAX;
...@@ -253,7 +253,7 @@ static unsigned long enc_pools_shrink_scan(struct shrinker *s, ...@@ -253,7 +253,7 @@ static unsigned long enc_pools_shrink_scan(struct shrinker *s,
(long)sc->nr_to_scan, page_pools.epp_free_pages); (long)sc->nr_to_scan, page_pools.epp_free_pages);
page_pools.epp_st_shrinks++; page_pools.epp_st_shrinks++;
page_pools.epp_last_shrink = get_seconds(); page_pools.epp_last_shrink = ktime_get_seconds();
} }
spin_unlock(&page_pools.epp_lock); spin_unlock(&page_pools.epp_lock);
...@@ -261,7 +261,7 @@ static unsigned long enc_pools_shrink_scan(struct shrinker *s, ...@@ -261,7 +261,7 @@ static unsigned long enc_pools_shrink_scan(struct shrinker *s,
* if no pool access for a long time, we consider it's fully idle. * if no pool access for a long time, we consider it's fully idle.
* a little race here is fine. * a little race here is fine.
*/ */
if (unlikely(get_seconds() - page_pools.epp_last_access > if (unlikely(ktime_get_seconds() - page_pools.epp_last_access >
CACHE_QUIESCENT_PERIOD)) { CACHE_QUIESCENT_PERIOD)) {
spin_lock(&page_pools.epp_lock); spin_lock(&page_pools.epp_lock);
page_pools.epp_idle_idx = IDLE_IDX_MAX; page_pools.epp_idle_idx = IDLE_IDX_MAX;
...@@ -457,7 +457,7 @@ static inline void enc_pools_wakeup(void) ...@@ -457,7 +457,7 @@ static inline void enc_pools_wakeup(void)
} }
} }
static int enc_pools_should_grow(int page_needed, long now) static int enc_pools_should_grow(int page_needed, time64_t now)
{ {
/* don't grow if someone else is growing the pools right now, /* don't grow if someone else is growing the pools right now,
* or the pools has reached its full capacity * or the pools has reached its full capacity
...@@ -521,7 +521,7 @@ int sptlrpc_enc_pool_get_pages(struct ptlrpc_bulk_desc *desc) ...@@ -521,7 +521,7 @@ int sptlrpc_enc_pool_get_pages(struct ptlrpc_bulk_desc *desc)
if (tick == 0) if (tick == 0)
tick = cfs_time_current(); tick = cfs_time_current();
now = get_seconds(); now = ktime_get_seconds();
page_pools.epp_st_missings++; page_pools.epp_st_missings++;
page_pools.epp_pages_short += desc->bd_iov_count; page_pools.epp_pages_short += desc->bd_iov_count;
...@@ -600,7 +600,7 @@ int sptlrpc_enc_pool_get_pages(struct ptlrpc_bulk_desc *desc) ...@@ -600,7 +600,7 @@ int sptlrpc_enc_pool_get_pages(struct ptlrpc_bulk_desc *desc)
this_idle) / this_idle) /
(IDLE_IDX_WEIGHT + 1); (IDLE_IDX_WEIGHT + 1);
page_pools.epp_last_access = get_seconds(); page_pools.epp_last_access = ktime_get_seconds();
spin_unlock(&page_pools.epp_lock); spin_unlock(&page_pools.epp_lock);
return 0; return 0;
...@@ -725,8 +725,8 @@ int sptlrpc_enc_pool_init(void) ...@@ -725,8 +725,8 @@ int sptlrpc_enc_pool_init(void)
page_pools.epp_growing = 0; page_pools.epp_growing = 0;
page_pools.epp_idle_idx = 0; page_pools.epp_idle_idx = 0;
page_pools.epp_last_shrink = get_seconds(); page_pools.epp_last_shrink = ktime_get_seconds();
page_pools.epp_last_access = get_seconds(); page_pools.epp_last_access = ktime_get_seconds();
spin_lock_init(&page_pools.epp_lock); spin_lock_init(&page_pools.epp_lock);
page_pools.epp_total_pages = 0; page_pools.epp_total_pages = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment