From: Cho KyongHo Date: Wed, 21 Dec 2016 02:17:20 +0000 (+0900) Subject: mm: do not alloc cma page for shmem X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=7f6c82e570cf79f779e9b9ddb9e8f2d62bcec18e;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git mm: do not alloc cma page for shmem Some page caches of shmem tends to be pinned for a long time. Therefore shmem should not allocate page caches from CMA because cma pages should be always ready to be reclaimed promptly. Change-Id: I024dad765feec07b0028851b0b98b7db7f3c85a5 Signed-off-by: Cho KyongHo --- diff --git a/mm/shmem.c b/mm/shmem.c index 6a5973d727f8..024e5c217f96 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2170,6 +2170,13 @@ static struct inode *shmem_get_inode(struct super_block *sb, const struct inode inode->i_blocks = 0; inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); inode->i_generation = get_seconds(); + /* + * removal of __GFP_HIGHMEM breaks GFP_HIGHUSER_MOVABLE. It is + * required not to allocate CMA pages to the page caches of + * shmem. + */ + mapping_set_gfp_mask(inode->i_mapping, + mapping_gfp_mask(inode->i_mapping) & ~__GFP_HIGHMEM); info = SHMEM_I(inode); memset(info, 0, (char *)inode - (char *)info); spin_lock_init(&info->lock);