diff options
Diffstat (limited to 'mm/truncate.c')
| -rw-r--r-- | mm/truncate.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/truncate.c b/mm/truncate.c index a9566752913..3a29a618021 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -19,6 +19,7 @@  #include <linux/task_io_accounting_ops.h>  #include <linux/buffer_head.h>	/* grr. try_to_release_page,  				   do_invalidatepage */ +#include <linux/cleancache.h>  #include "internal.h" @@ -51,6 +52,7 @@ void do_invalidatepage(struct page *page, unsigned long offset)  static inline void truncate_partial_page(struct page *page, unsigned partial)  {  	zero_user_segment(page, partial, PAGE_CACHE_SIZE); +	cleancache_flush_page(page->mapping, page);  	if (page_has_private(page))  		do_invalidatepage(page, partial);  } @@ -214,6 +216,7 @@ void truncate_inode_pages_range(struct address_space *mapping,  	pgoff_t next;  	int i; +	cleancache_flush_inode(mapping);  	if (mapping->nrpages == 0)  		return; @@ -291,6 +294,7 @@ void truncate_inode_pages_range(struct address_space *mapping,  		pagevec_release(&pvec);  		mem_cgroup_uncharge_end();  	} +	cleancache_flush_inode(mapping);  }  EXPORT_SYMBOL(truncate_inode_pages_range); @@ -440,6 +444,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,  	int did_range_unmap = 0;  	int wrapped = 0; +	cleancache_flush_inode(mapping);  	pagevec_init(&pvec, 0);  	next = start;  	while (next <= end && !wrapped && @@ -498,6 +503,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,  		mem_cgroup_uncharge_end();  		cond_resched();  	} +	cleancache_flush_inode(mapping);  	return ret;  }  EXPORT_SYMBOL_GPL(invalidate_inode_pages2_range);  |