Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd405a09 authored by Josef Bacik's avatar Josef Bacik Committed by Gerrit - the friendly Code Review server
Browse files

filemap: pass vm_fault to the mmap ra helpers

All of the arguments to these functions come from the vmf, and the
following patches are going to add more arguments.  Cut down on the amount
of arguments passed by simply passing in the vmf to these two helpers.

Change-Id: I9c83716967e5ded64682a935c6a3c6b2fa01175f
Link: http://lkml.kernel.org/r/20181211173801.29535-3-josef@toxicpanda.com


Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Git-Commit: 38db5b064e830732ee8c821517c065adb931ecdb
Git-Repo: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git


Signed-off-by: default avatarVijayanand Jitta <vjitta@codeaurora.org>
parent bf8cd2d2
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -2274,20 +2274,20 @@ EXPORT_SYMBOL(generic_file_read_iter);
 * Synchronous readahead happens when we don't even find
 * a page in the page cache at all.
 */
static void do_sync_mmap_readahead(struct vm_area_struct *vma,
				   struct file_ra_state *ra,
				   struct file *file,
				   pgoff_t offset)
static void do_sync_mmap_readahead(struct vm_fault *vmf)
{
	struct file *file = vmf->vma->vm_file;
	struct file_ra_state *ra = &file->f_ra;
	struct address_space *mapping = file->f_mapping;
	pgoff_t offset = vmf->pgoff;

	/* If we don't want any read-ahead, don't bother */
	if (vma->vm_flags & VM_RAND_READ)
	if (vmf->vma->vm_flags & VM_RAND_READ)
		return;
	if (!ra->ra_pages)
		return;

	if (vma->vm_flags & VM_SEQ_READ) {
	if (vmf->vma->vm_flags & VM_SEQ_READ) {
		page_cache_sync_readahead(mapping, ra, file, offset,
					  ra->ra_pages);
		return;
@@ -2317,16 +2317,16 @@ static void do_sync_mmap_readahead(struct vm_area_struct *vma,
 * Asynchronous readahead happens when we find the page and PG_readahead,
 * so we want to possibly extend the readahead further..
 */
static void do_async_mmap_readahead(struct vm_area_struct *vma,
				    struct file_ra_state *ra,
				    struct file *file,
				    struct page *page,
				    pgoff_t offset)
static void do_async_mmap_readahead(struct vm_fault *vmf,
				    struct page *page)
{
	struct file *file = vmf->vma->vm_file;
	struct file_ra_state *ra = &file->f_ra;
	struct address_space *mapping = file->f_mapping;
	pgoff_t offset = vmf->pgoff;

	/* If we don't want any read-ahead, don't bother */
	if (vma->vm_flags & VM_RAND_READ)
	if (vmf->vma->vm_flags & VM_RAND_READ)
		return;
	if (ra->mmap_miss > 0)
		ra->mmap_miss--;
@@ -2383,10 +2383,10 @@ int filemap_fault(struct vm_fault *vmf)
		 * We found the page, so try async readahead before
		 * waiting for the lock.
		 */
		do_async_mmap_readahead(vmf->vma, ra, file, page, offset);
		do_async_mmap_readahead(vmf, page);
	} else if (!page) {
		/* No page in the page cache at all */
		do_sync_mmap_readahead(vmf->vma, ra, file, offset);
		do_sync_mmap_readahead(vmf);
		count_vm_event(PGMAJFAULT);
		count_memcg_event_mm(vmf->vma->vm_mm, PGMAJFAULT);
		ret = VM_FAULT_MAJOR;