summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2011-04-07 14:29:31 +1000
committerStephen Rothwell <sfr@canb.auug.org.au>2011-04-07 14:29:31 +1000
commit8705bdaebe4bec8cf5d61d8d223048102b635d60 (patch)
treeb4bf196d464b2f4aba58914ae3e57c79c5a85346 /fs/btrfs/extent_io.c
parent977f3648be86b7245f7c19b4401ed168ea11b5af (diff)
parent5231e92e133d6db6681a4485b1794a01469ca9ad (diff)
Merge remote-tracking branch 'cleancache/linux-next'
Conflicts: fs/ocfs2/super.c fs/super.c include/linux/fs.h mm/Kconfig mm/truncate.c
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 20ddb28602a8..7adfcdc1ba89 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -10,6 +10,7 @@
#include <linux/swap.h>
#include <linux/writeback.h>
#include <linux/pagevec.h>
+#include <linux/cleancache.h>
#include "extent_io.h"
#include "extent_map.h"
#include "compat.h"
@@ -1990,6 +1991,13 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
set_page_extent_mapped(page);
+ if (!PageUptodate(page)) {
+ if (cleancache_get_page(page) == 0) {
+ BUG_ON(blocksize != PAGE_SIZE);
+ goto out;
+ }
+ }
+
end = page_end;
while (1) {
lock_extent(tree, start, end, GFP_NOFS);
@@ -2117,6 +2125,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
cur = cur + iosize;
page_offset += iosize;
}
+out:
if (!nr) {
if (!PageError(page))
SetPageUptodate(page);