mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
shrinker: convert remaining shrinkers to count/scan API
Convert the remaining couple of random shrinkers in the tree to the new API. Signed-off-by: Dave Chinner <[email protected]> Signed-off-by: Glauber Costa <[email protected]> Cc: Marcelo Tosatti <[email protected]> Cc: Gleb Natapov <[email protected]> Cc: Chuck Lever <[email protected]> Cc: J. Bruce Fields <[email protected]> Cc: Trond Myklebust <[email protected]> Cc: "Theodore Ts'o" <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Al Viro <[email protected]> Cc: Artem Bityutskiy <[email protected]> Cc: Arve Hjønnevåg <[email protected]> Cc: Carlos Maiolino <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Chuck Lever <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: David Rientjes <[email protected]> Cc: Gleb Natapov <[email protected]> Cc: Greg Thelen <[email protected]> Cc: J. Bruce Fields <[email protected]> Cc: Jan Kara <[email protected]> Cc: Jerome Glisse <[email protected]> Cc: John Stultz <[email protected]> Cc: KAMEZAWA Hiroyuki <[email protected]> Cc: Kent Overstreet <[email protected]> Cc: Kirill A. Shutemov <[email protected]> Cc: Marcelo Tosatti <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Steven Whitehouse <[email protected]> Cc: Thomas Hellstrom <[email protected]> Cc: Trond Myklebust <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
ea8352c289
commit
70534a739c
2 changed files with 45 additions and 21 deletions
|
|
@ -434,12 +434,13 @@ EXPORT_SYMBOL_GPL(rpcauth_destroy_credcache);
|
|||
/*
|
||||
* Remove stale credentials. Avoid sleeping inside the loop.
|
||||
*/
|
||||
static int
|
||||
static long
|
||||
rpcauth_prune_expired(struct list_head *free, int nr_to_scan)
|
||||
{
|
||||
spinlock_t *cache_lock;
|
||||
struct rpc_cred *cred, *next;
|
||||
unsigned long expired = jiffies - RPC_AUTH_EXPIRY_MORATORIUM;
|
||||
long freed = 0;
|
||||
|
||||
list_for_each_entry_safe(cred, next, &cred_unused, cr_lru) {
|
||||
|
||||
|
|
@ -451,10 +452,11 @@ rpcauth_prune_expired(struct list_head *free, int nr_to_scan)
|
|||
*/
|
||||
if (time_in_range(cred->cr_expire, expired, jiffies) &&
|
||||
test_bit(RPCAUTH_CRED_HASHED, &cred->cr_flags) != 0)
|
||||
return 0;
|
||||
break;
|
||||
|
||||
list_del_init(&cred->cr_lru);
|
||||
number_cred_unused--;
|
||||
freed++;
|
||||
if (atomic_read(&cred->cr_count) != 0)
|
||||
continue;
|
||||
|
||||
|
|
@ -467,29 +469,39 @@ rpcauth_prune_expired(struct list_head *free, int nr_to_scan)
|
|||
}
|
||||
spin_unlock(cache_lock);
|
||||
}
|
||||
return (number_cred_unused / 100) * sysctl_vfs_cache_pressure;
|
||||
return freed;
|
||||
}
|
||||
|
||||
/*
|
||||
* Run memory cache shrinker.
|
||||
*/
|
||||
static int
|
||||
rpcauth_cache_shrinker(struct shrinker *shrink, struct shrink_control *sc)
|
||||
static unsigned long
|
||||
rpcauth_cache_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
||||
|
||||
{
|
||||
LIST_HEAD(free);
|
||||
int res;
|
||||
int nr_to_scan = sc->nr_to_scan;
|
||||
gfp_t gfp_mask = sc->gfp_mask;
|
||||
unsigned long freed;
|
||||
|
||||
if ((gfp_mask & GFP_KERNEL) != GFP_KERNEL)
|
||||
return (nr_to_scan == 0) ? 0 : -1;
|
||||
if ((sc->gfp_mask & GFP_KERNEL) != GFP_KERNEL)
|
||||
return SHRINK_STOP;
|
||||
|
||||
/* nothing left, don't come back */
|
||||
if (list_empty(&cred_unused))
|
||||
return 0;
|
||||
return SHRINK_STOP;
|
||||
|
||||
spin_lock(&rpc_credcache_lock);
|
||||
res = rpcauth_prune_expired(&free, nr_to_scan);
|
||||
freed = rpcauth_prune_expired(&free, sc->nr_to_scan);
|
||||
spin_unlock(&rpc_credcache_lock);
|
||||
rpcauth_destroy_credlist(&free);
|
||||
return res;
|
||||
|
||||
return freed;
|
||||
}
|
||||
|
||||
static unsigned long
|
||||
rpcauth_cache_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
|
||||
|
||||
{
|
||||
return (number_cred_unused / 100) * sysctl_vfs_cache_pressure;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -805,7 +817,8 @@ rpcauth_uptodatecred(struct rpc_task *task)
|
|||
}
|
||||
|
||||
static struct shrinker rpc_cred_shrinker = {
|
||||
.shrink = rpcauth_cache_shrinker,
|
||||
.count_objects = rpcauth_cache_shrink_count,
|
||||
.scan_objects = rpcauth_cache_shrink_scan,
|
||||
.seeks = DEFAULT_SEEKS,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue