|
@@ -10,6 +10,7 @@
|
|
#include <linux/swap.h>
|
|
#include <linux/swap.h>
|
|
#include <linux/writeback.h>
|
|
#include <linux/writeback.h>
|
|
#include <linux/pagevec.h>
|
|
#include <linux/pagevec.h>
|
|
|
|
+#include <linux/cleancache.h>
|
|
#include "extent_io.h"
|
|
#include "extent_io.h"
|
|
#include "extent_map.h"
|
|
#include "extent_map.h"
|
|
#include "compat.h"
|
|
#include "compat.h"
|
|
@@ -2015,6 +2016,13 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
|
|
|
|
|
|
set_page_extent_mapped(page);
|
|
set_page_extent_mapped(page);
|
|
|
|
|
|
|
|
+ if (!PageUptodate(page)) {
|
|
|
|
+ if (cleancache_get_page(page) == 0) {
|
|
|
|
+ BUG_ON(blocksize != PAGE_SIZE);
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
end = page_end;
|
|
end = page_end;
|
|
while (1) {
|
|
while (1) {
|
|
lock_extent(tree, start, end, GFP_NOFS);
|
|
lock_extent(tree, start, end, GFP_NOFS);
|
|
@@ -2148,6 +2156,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
|
|
cur = cur + iosize;
|
|
cur = cur + iosize;
|
|
page_offset += iosize;
|
|
page_offset += iosize;
|
|
}
|
|
}
|
|
|
|
+out:
|
|
if (!nr) {
|
|
if (!nr) {
|
|
if (!PageError(page))
|
|
if (!PageError(page))
|
|
SetPageUptodate(page);
|
|
SetPageUptodate(page);
|