summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--module/zfs/arc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index eb5304a82..7f1f7473d 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -2191,7 +2191,8 @@ arc_reclaim_thread(void)
* direct reclaim will be trigger. In direct reclaim a more aggressive
* strategy is used, data is evicted from the ARC and free slabs reaped.
*/
-SPL_SHRINKER_CALLBACK_PROTO(arc_shrinker_func, cb, nr_to_scan, gfp_mask)
+static int
+__arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc)
{
arc_reclaim_strategy_t strategy;
int arc_reclaim;
@@ -2199,7 +2200,7 @@ SPL_SHRINKER_CALLBACK_PROTO(arc_shrinker_func, cb, nr_to_scan, gfp_mask)
/* Return number of reclaimable pages based on arc_shrink_shift */
arc_reclaim = MAX(btop(((int64_t)arc_size - (int64_t)arc_c_min))
>> arc_shrink_shift, 0);
- if (nr_to_scan == 0)
+ if (sc->nr_to_scan == 0)
return (arc_reclaim);
/* Prevent reclaim below arc_c_min */
@@ -2207,7 +2208,7 @@ SPL_SHRINKER_CALLBACK_PROTO(arc_shrinker_func, cb, nr_to_scan, gfp_mask)
return (-1);
/* Not allowed to perform filesystem reclaim */
- if (!(gfp_mask & __GFP_FS))
+ if (!(sc->gfp_mask & __GFP_FS))
return (-1);
/* Reclaim in progress */
@@ -2229,6 +2230,7 @@ SPL_SHRINKER_CALLBACK_PROTO(arc_shrinker_func, cb, nr_to_scan, gfp_mask)
return (arc_reclaim);
}
+SPL_SHRINKER_CALLBACK_WRAPPER(arc_shrinker_func);
SPL_SHRINKER_DECLARE(arc_shrinker, arc_shrinker_func, DEFAULT_SEEKS);
#endif /* _KERNEL */