On Fri, May 24, 2019 at 4:06 PM Sahitya Tummala <stumm...@codeaurora.org> wrote: > > This is important for the scenario where FBE (file based encryption) > is enabled. With FBE, the encryption context needed to en/decrypt a file > will be stored in inode and any inode that is left in the cache after > drop_caches is done will be a problem. For ex, in Android, drop_caches > will be used when switching work profiles. > > Signed-off-by: Sahitya Tummala <stumm...@codeaurora.org> > --- > mm/vmscan.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index d96c547..b48926f 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -730,7 +730,7 @@ void drop_slab_node(int nid) > do { > freed += shrink_slab(GFP_KERNEL, nid, memcg, 0); > } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != > NULL); > - } while (freed > 10); > + } while (freed != 0); > }
Perhaps that is not enough, because the shrink may stop when scan count is less than SHRINK_BATCH. Pls. see do_shrink_slab. What about set shrinker->batch to 1 in this case ? Thanks Yafang