aboutsummaryrefslogtreecommitdiffstats
path: root/fs/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/buffer.c')
-rw-r--r--fs/buffer.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/buffer.c b/fs/buffer.c
index 6f88dcc6d002..0befa724ab98 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -528,7 +528,7 @@ static void free_more_memory(void)
528 for_each_pgdat(pgdat) { 528 for_each_pgdat(pgdat) {
529 zones = pgdat->node_zonelists[GFP_NOFS&GFP_ZONEMASK].zones; 529 zones = pgdat->node_zonelists[GFP_NOFS&GFP_ZONEMASK].zones;
530 if (*zones) 530 if (*zones)
531 try_to_free_pages(zones, GFP_NOFS, 0); 531 try_to_free_pages(zones, GFP_NOFS);
532 } 532 }
533} 533}
534 534
@@ -2094,9 +2094,12 @@ int block_read_full_page(struct page *page, get_block_t *get_block)
2094 continue; 2094 continue;
2095 2095
2096 if (!buffer_mapped(bh)) { 2096 if (!buffer_mapped(bh)) {
2097 int err = 0;
2098
2097 fully_mapped = 0; 2099 fully_mapped = 0;
2098 if (iblock < lblock) { 2100 if (iblock < lblock) {
2099 if (get_block(inode, iblock, bh, 0)) 2101 err = get_block(inode, iblock, bh, 0);
2102 if (err)
2100 SetPageError(page); 2103 SetPageError(page);
2101 } 2104 }
2102 if (!buffer_mapped(bh)) { 2105 if (!buffer_mapped(bh)) {
@@ -2104,7 +2107,8 @@ int block_read_full_page(struct page *page, get_block_t *get_block)
2104 memset(kaddr + i * blocksize, 0, blocksize); 2107 memset(kaddr + i * blocksize, 0, blocksize);
2105 flush_dcache_page(page); 2108 flush_dcache_page(page);
2106 kunmap_atomic(kaddr, KM_USER0); 2109 kunmap_atomic(kaddr, KM_USER0);
2107 set_buffer_uptodate(bh); 2110 if (!err)
2111 set_buffer_uptodate(bh);
2108 continue; 2112 continue;
2109 } 2113 }
2110 /* 2114 /*