@@ -2904,13 +2904,14 @@ static int __do_readpage(struct extent_io_tree *tree,
size_t disk_io_size;
size_t blocksize = inode->i_sb->s_blocksize;
unsigned long this_bio_flag = *bio_flags & EXTENT_BIO_PARENT_LOCKED;
+ int swapcache = PageSwapCache(page);
- if (likely(!PageSwapCache(page)))
+ if (likely(!swapcache))
set_page_extent_mapped(page);
end = page_end;
if (!PageUptodate(page)) {
- if (cleancache_get_page(page) == 0) {
+ if (likely(!swapcache) && cleancache_get_page(page) == 0) {
BUG_ON(blocksize != PAGE_SIZE);
unlock_extent(tree, start, end);
goto out;
Signed-off-by: Omar Sandoval <osandov@osandov.com> --- fs/btrfs/extent_io.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)