Commit 9fea105d authored by Chen Wandun's avatar Chen Wandun Committed by Zheng Zengkai
Browse files

mm/page_cache_limit: do shrink_page_cache when adding page to page cache

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I4HOXK



------------------------------------------

Add hooks in function add_to page_cache and add_to_page_cache_lru

Signed-off-by: default avatarChen Wandun <chenwandun@huawei.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 955d63ae
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -19,9 +19,11 @@ unsigned long __shrink_node_page_cache(int nid, gfp_t mask,
		unsigned long nr_to_reclaim, enum page_cache_reclaim_flag flag);
void kpagecache_limitd_stop(int nid);
int kpagecache_limitd_run(int nid);
void wakeup_all_kpagecache_limitd(void);
#else
static inline void kpagecache_limitd_stop(int nid) {}
static inline int kpagecache_limitd_run(int nid) { return 0; }
static inline void wakeup_all_kpagecache_limitd(void) {}
#endif

#endif
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/bitops.h>
#include <linux/hardirq.h> /* for in_interrupt() */
#include <linux/hugetlb_inline.h>
#include <linux/page_cache_limit.h>

struct pagevec;

@@ -777,6 +778,7 @@ static inline int add_to_page_cache(struct page *page,
{
	int error;

	wakeup_all_kpagecache_limitd();
	__SetPageLocked(page);
	error = add_to_page_cache_locked(page, mapping, offset, gfp_mask);
	if (unlikely(error))
+2 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@
#include <linux/psi.h>
#include <linux/ramfs.h>
#include <linux/page_idle.h>
#include <linux/page_cache_limit.h>
#include "internal.h"

#define CREATE_TRACE_POINTS
@@ -923,6 +924,7 @@ int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
	void *shadow = NULL;
	int ret;

	wakeup_all_kpagecache_limitd();
	__SetPageLocked(page);
	ret = __add_to_page_cache_locked(page, mapping, offset,
					 gfp_mask, &shadow);