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: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
14e0729841
Коммит
a8127717cb
24
mm/filemap.c
24
mm/filemap.c
|
@ -1446,30 +1446,6 @@ page_not_uptodate:
|
|||
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.
|
||||
|
|
Загрузка…
Ссылка в новой задаче