diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2011-04-07 14:29:31 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2011-04-07 14:29:31 +1000 |
commit | 8705bdaebe4bec8cf5d61d8d223048102b635d60 (patch) | |
tree | b4bf196d464b2f4aba58914ae3e57c79c5a85346 /fs/btrfs/extent_io.c | |
parent | 977f3648be86b7245f7c19b4401ed168ea11b5af (diff) | |
parent | 5231e92e133d6db6681a4485b1794a01469ca9ad (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.c | 9 |
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); |