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

Commit a8127717 authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

mm: simplify filemap_nopage



Identical block is duplicated twice: contrary to the comment, we have been
re-reading the page *twice* in filemap_nopage rather than once.

If any retry logic or anything is needed, it belongs in lower levels anyway.
Only retry once.  Linus agrees.

Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 14e07298
Loading
Loading
Loading
Loading
+0 −24
Original line number Diff line number Diff line
@@ -1446,30 +1446,6 @@ struct page *filemap_nopage(struct vm_area_struct *area,
		majmin = VM_FAULT_MAJOR;
		count_vm_event(PGMAJFAULT);
	}
	lock_page(page);

	/* Did it get unhashed while we waited for it? */
	if (!page->mapping) {
		unlock_page(page);
		page_cache_release(page);
		goto retry_all;
	}

	/* Did somebody else get it up-to-date? */
	if (PageUptodate(page)) {
		unlock_page(page);
		goto success;
	}

	error = mapping->a_ops->readpage(file, page);
	if (!error) {
		wait_on_page_locked(page);
		if (PageUptodate(page))
			goto success;
	} else if (error == AOP_TRUNCATED_PAGE) {
		page_cache_release(page);
		goto retry_find;
	}

	/*
	 * Umm, take care of errors if the page isn't up-to-date.