From: Ran Xiaokai <ran.xiaokai@xxxxxxxxxx> All tmpfs and ramfs pages have PG_dirty bit set once they are allocated and added to the pagecache。So pages can not be freed from tmpfs or ramfs. So skip tmpfs and ramfs when drop caches. Signed-off-by: Ran Xiaokai <ran.xiaokai@xxxxxxxxxx> --- fs/drop_caches.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/drop_caches.c b/fs/drop_caches.c index e619c31b6bd9..600c043c1eb7 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c @@ -10,6 +10,7 @@ #include <linux/writeback.h> #include <linux/sysctl.h> #include <linux/gfp.h> +#include <linux/magic.h> #include "internal.h" /* A global variable is a bit ugly, but it keeps the code simple */ @@ -19,6 +20,9 @@ static void drop_pagecache_sb(struct super_block *sb, void *unused) { struct inode *inode, *toput_inode = NULL; + if (sb->s_magic == TMPFS_MAGIC || sb->s_magic == RAMFS_MAGIC) + return; + spin_lock(&sb->s_inode_list_lock); list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { spin_lock(&inode->i_lock); -- 2.15.2