ext4: correct the cache_nr in tracepoint ext4_es_shrink_exit
authorZhang Yi <yi.zhang@huawei.com>
Sat, 22 May 2021 10:30:45 +0000 (18:30 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 23 Jun 2021 01:34:17 +0000 (21:34 -0400)
The cache_cnt parameter of tracepoint ext4_es_shrink_exit means the
remaining cache count after shrink, but now it is the cache count before
shrink, fix it by read sbi->s_extent_cache_cnt again.

Fixes: 1ab6c4997e04 ("fs: convert fs shrinkers to new scan/count API")
Cc: stable@vger.kernel.org # 3.12+
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20210522103045.690103-3-yi.zhang@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/extents_status.c

index db3cd70..9a3a899 100644 (file)
@@ -1576,6 +1576,7 @@ static unsigned long ext4_es_scan(struct shrinker *shrink,
 
        nr_shrunk = __es_shrink(sbi, nr_to_scan, NULL);
 
+       ret = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt);
        trace_ext4_es_shrink_scan_exit(sbi->s_sb, nr_shrunk, ret);
        return nr_shrunk;
 }