aboutsummaryrefslogtreecommitdiffstats
path: root/mm/filemap.c
diff options
context:
space:
mode:
authorNick Piggin <npiggin@suse.de>2007-05-06 17:49:16 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-07 15:12:52 -0400
commita8127717cb24be7b8827a8d9e0ddbfde6b392146 (patch)
tree3b7d5556f127263b600bbcb44437c4c1739c000a /mm/filemap.c
parent14e072984179d3d421bf9ab75cc67e0961742841 (diff)
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>
Diffstat (limited to 'mm/filemap.c')
-rw-r--r--mm/filemap.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/mm/filemap.c b/mm/filemap.c
index 070e7547d5b5..cbea95a25283 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1446,30 +1446,6 @@ page_not_uptodate:
1446 majmin = VM_FAULT_MAJOR; 1446 majmin = VM_FAULT_MAJOR;
1447 count_vm_event(PGMAJFAULT); 1447 count_vm_event(PGMAJFAULT);
1448 } 1448 }
1449 lock_page(page);
1450
1451 /* Did it get unhashed while we waited for it? */
1452 if (!page->mapping) {
1453 unlock_page(page);
1454 page_cache_release(page);
1455 goto retry_all;
1456 }
1457
1458 /* Did somebody else get it up-to-date? */
1459 if (PageUptodate(page)) {
1460 unlock_page(page);
1461 goto success;
1462 }
1463
1464 error = mapping->a_ops->readpage(file, page);
1465 if (!error) {
1466 wait_on_page_locked(page);
1467 if (PageUptodate(page))
1468 goto success;
1469 } else if (error == AOP_TRUNCATED_PAGE) {
1470 page_cache_release(page);
1471 goto retry_find;
1472 }
1473 1449
1474 /* 1450 /*
1475 * Umm, take care of errors if the page isn't up-to-date. 1451 * Umm, take care of errors if the page isn't up-to-date.