X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Farc.c;h=7f1f7473d0b977675974eb370ea19842fdf71a71;hb=b59322a0d8919cc0ed5982f5a869e9e022645515;hp=eb5304a82a8cfb592758fcb585ef78ef87c8a77d;hpb=3fd70ee6b0bc9fa74b7ef87657b9cc3b0304f689;p=zfs.git diff --git a/module/zfs/arc.c b/module/zfs/arc.c index eb5304a..7f1f747 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 */