linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv2 13/13] mm, thp, tmpfs: misc fixes for thp tmpfs
@ 2013-10-21 21:49 Ning Qu
  0 siblings, 0 replies; only message in thread
From: Ning Qu @ 2013-10-21 21:49 UTC (permalink / raw)
  To: Andrea Arcangeli, Andrew Morton, Kirill A. Shutemov, Hugh Dickins
  Cc: Al Viro, Wu Fengguang, Jan Kara, Mel Gorman, linux-mm,
	Andi Kleen, Matthew Wilcox, Hillf Danton, Dave Hansen,
	Alexander Shishkin, linux-fsdevel, linux-kernel, Ning Qu,
	Ning Qu

1) get rid of the actor function pointer in shm as what Kirill did in generic
file operations.

2) add kernel command line option to turn on/off the thp page cache support.

Signed-off-by: Ning Qu <quning@gmail.com>
---
 mm/huge_memory.c | 27 +++++++++++++++++++++++++++
 mm/shmem.c       |  7 ++++---
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index d36bdac..ea79a70 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -711,6 +711,33 @@ out:
 }
 __setup("transparent_hugepage=", setup_transparent_hugepage);
 
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE_PAGECACHE
+static int __init setup_transparent_hugepage_pagecache(char *str)
+{
+	int ret = 0;
+	if (!str)
+		goto out;
+	if (!strcmp(str, "on")) {
+		set_bit(TRANSPARENT_HUGEPAGE_PAGECACHE,
+			&transparent_hugepage_flags);
+		ret = 1;
+	} else if (!strcmp(str, "off")) {
+		clear_bit(TRANSPARENT_HUGEPAGE_PAGECACHE,
+			  &transparent_hugepage_flags);
+		ret = 1;
+	}
+out:
+	if (!ret)
+		printk(KERN_WARNING
+			"transparent_hugepage_pagecache= cannot parse, "
+			"ignored\n");
+	return ret;
+}
+
+__setup("transparent_hugepage_pagecache=",
+	setup_transparent_hugepage_pagecache);
+#endif
+
 pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
 {
 	if (likely(vma->vm_flags & VM_WRITE))
diff --git a/mm/shmem.c b/mm/shmem.c
index 391c4eb..77dd90b 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1765,7 +1765,8 @@ static unsigned long pos_to_off(struct page *page, loff_t pos)
 	return pos & ~page_cache_to_mask(page);
 }
 
-static void do_shmem_file_read(struct file *filp, loff_t *ppos, read_descriptor_t *desc, read_actor_t actor)
+static void do_shmem_file_read(struct file *filp, loff_t *ppos,
+				read_descriptor_t *desc)
 {
 	struct inode *inode = file_inode(filp);
 	gfp_t gfp = mapping_gfp_mask(inode->i_mapping);
@@ -1862,7 +1863,7 @@ static void do_shmem_file_read(struct file *filp, loff_t *ppos, read_descriptor_
 		 * "pos" here (the actor routine has to update the user buffer
 		 * pointers and the remaining count).
 		 */
-		ret = actor(desc, page, pos_to_off(page, *ppos), nr);
+		ret = file_read_actor(desc, page, pos_to_off(page, *ppos), nr);
 		*ppos += ret;
 		index = *ppos >> PAGE_CACHE_SHIFT;
 
@@ -1899,7 +1900,7 @@ static ssize_t shmem_file_aio_read(struct kiocb *iocb,
 		if (desc.count == 0)
 			continue;
 		desc.error = 0;
-		do_shmem_file_read(filp, ppos, &desc, file_read_actor);
+		do_shmem_file_read(filp, ppos, &desc);
 		retval += desc.written;
 		if (desc.error) {
 			retval = retval ?: desc.error;
-- 
1.8.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-10-21 21:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-21 21:49 [PATCHv2 13/13] mm, thp, tmpfs: misc fixes for thp tmpfs Ning Qu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox