aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index ba41da59e31b..0cee46e01081 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -10,6 +10,7 @@
10#include <linux/swap.h> 10#include <linux/swap.h>
11#include <linux/writeback.h> 11#include <linux/writeback.h>
12#include <linux/pagevec.h> 12#include <linux/pagevec.h>
13#include <linux/cleancache.h>
13#include "extent_io.h" 14#include "extent_io.h"
14#include "extent_map.h" 15#include "extent_map.h"
15#include "compat.h" 16#include "compat.h"
@@ -2015,6 +2016,13 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
2015 2016
2016 set_page_extent_mapped(page); 2017 set_page_extent_mapped(page);
2017 2018
2019 if (!PageUptodate(page)) {
2020 if (cleancache_get_page(page) == 0) {
2021 BUG_ON(blocksize != PAGE_SIZE);
2022 goto out;
2023 }
2024 }
2025
2018 end = page_end; 2026 end = page_end;
2019 while (1) { 2027 while (1) {
2020 lock_extent(tree, start, end, GFP_NOFS); 2028 lock_extent(tree, start, end, GFP_NOFS);
@@ -2148,6 +2156,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
2148 cur = cur + iosize; 2156 cur = cur + iosize;
2149 page_offset += iosize; 2157 page_offset += iosize;
2150 } 2158 }
2159out:
2151 if (!nr) { 2160 if (!nr) {
2152 if (!PageError(page)) 2161 if (!PageError(page))
2153 SetPageUptodate(page); 2162 SetPageUptodate(page);