summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-06-21 14:26:51 -0700
committerBrian Behlendorf <[email protected]>2011-06-21 14:36:39 -0700
commit7e7baecaa321ce4e96938a02b87ab22a7939e422 (patch)
tree1afa047d20384d611edaa52ecaf9e6b1d774dcc6
parentb00131d43ca344d4b205a03ab3eb771a060e5087 (diff)
Linux 3.0 compat, shrinker compatibility
To accomindate the updated Linux 3.0 shrinker API the spl shrinker compatibility code was updated. Unfortunately, this couldn't be done cleanly without slightly adjusting the comapt API. See spl commit a55bcaad181096d764e12d847e3091cd7b15509a. This commit updates the ZFS code to use the slightly modified API. You must use the latest SPL if your building ZFS.
-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 */