aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2015-01-22 12:17:17 -0500
committerMister Oyster <oysterized@gmail.com>2017-05-27 19:39:51 +0200
commitf260656a0bd3a62ed160ce9a78ee1ed694e00659 (patch)
tree700f8b7a5854a6cb8430934027cc5a3a36eea0c5
parenta43d14a3d5ca47ccce5d64a7704f5fe528237f84 (diff)
ext4: use the old shrinker API
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--fs/ext4/extents_status.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
index 94e7855ae..1a33fb2e4 100644
--- a/fs/ext4/extents_status.c
+++ b/fs/ext4/extents_status.c
@@ -1080,6 +1080,14 @@ static unsigned long ext4_es_scan(struct shrinker *shrink,
return nr_shrunk;
}
+static int ext4_es_shrink(struct shrinker *shrink, struct shrink_control *sc)
+{
+ if (sc->nr_to_scan)
+ return ext4_es_scan(shrink, sc);
+ else
+ return ext4_es_count(shrink, sc);
+}
+
static void *ext4_es_seq_shrinker_info_start(struct seq_file *seq, loff_t *pos)
{
return *pos ? NULL : SEQ_START_TOKEN;
@@ -1196,12 +1204,9 @@ int ext4_es_register_shrinker(struct ext4_sb_info *sbi)
if (err)
goto err1;
- sbi->s_es_shrinker.scan_objects = ext4_es_scan;
- sbi->s_es_shrinker.count_objects = ext4_es_count;
+ sbi->s_es_shrinker.shrink = ext4_es_shrink;
sbi->s_es_shrinker.seeks = DEFAULT_SEEKS;
- err = register_shrinker(&sbi->s_es_shrinker);
- if (err)
- goto err2;
+ register_shrinker(&sbi->s_es_shrinker);
if (sbi->s_proc)
proc_create_data("es_shrinker_info", S_IRUGO, sbi->s_proc,
@@ -1209,7 +1214,6 @@ int ext4_es_register_shrinker(struct ext4_sb_info *sbi)
return 0;
-err2:
percpu_counter_destroy(&sbi->s_es_stats.es_stats_lru_cnt);
err1:
percpu_counter_destroy(&sbi->s_es_stats.es_stats_all_cnt);