aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/ctree.h3
-rw-r--r--fs/btrfs/extent_io.c10
-rw-r--r--fs/btrfs/inode.c2
-rw-r--r--fs/btrfs/relocation.c2
-rw-r--r--fs/btrfs/super.c4
5 files changed, 16 insertions, 5 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 8e948ec1ee6b..f30ac05dbda7 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -19,7 +19,6 @@
19#ifndef __BTRFS_CTREE__ 19#ifndef __BTRFS_CTREE__
20#define __BTRFS_CTREE__ 20#define __BTRFS_CTREE__
21 21
22#include <linux/version.h>
23#include <linux/mm.h> 22#include <linux/mm.h>
24#include <linux/highmem.h> 23#include <linux/highmem.h>
25#include <linux/fs.h> 24#include <linux/fs.h>
@@ -2549,7 +2548,7 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf);
2549int btrfs_readpage(struct file *file, struct page *page); 2548int btrfs_readpage(struct file *file, struct page *page);
2550void btrfs_evict_inode(struct inode *inode); 2549void btrfs_evict_inode(struct inode *inode);
2551int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); 2550int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc);
2552void btrfs_dirty_inode(struct inode *inode); 2551void btrfs_dirty_inode(struct inode *inode, int flags);
2553struct inode *btrfs_alloc_inode(struct super_block *sb); 2552struct inode *btrfs_alloc_inode(struct super_block *sb);
2554void btrfs_destroy_inode(struct inode *inode); 2553void btrfs_destroy_inode(struct inode *inode);
2555int btrfs_drop_inode(struct inode *inode); 2554int btrfs_drop_inode(struct inode *inode);
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index b181a94a7170..7055d11c1efd 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -10,6 +10,8 @@
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/prefetch.h>
14#include <linux/cleancache.h>
13#include "extent_io.h" 15#include "extent_io.h"
14#include "extent_map.h" 16#include "extent_map.h"
15#include "compat.h" 17#include "compat.h"
@@ -1969,6 +1971,13 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
1969 1971
1970 set_page_extent_mapped(page); 1972 set_page_extent_mapped(page);
1971 1973
1974 if (!PageUptodate(page)) {
1975 if (cleancache_get_page(page) == 0) {
1976 BUG_ON(blocksize != PAGE_SIZE);
1977 goto out;
1978 }
1979 }
1980
1972 end = page_end; 1981 end = page_end;
1973 while (1) { 1982 while (1) {
1974 lock_extent(tree, start, end, GFP_NOFS); 1983 lock_extent(tree, start, end, GFP_NOFS);
@@ -2102,6 +2111,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,
2102 cur = cur + iosize; 2111 cur = cur + iosize;
2103 pg_offset += iosize; 2112 pg_offset += iosize;
2104 } 2113 }
2114out:
2105 if (!nr) { 2115 if (!nr) {
2106 if (!PageError(page)) 2116 if (!PageError(page))
2107 SetPageUptodate(page); 2117 SetPageUptodate(page);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 447612d3a16a..d340f63d8f07 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4299,7 +4299,7 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc)
4299 * FIXME, needs more benchmarking...there are no reasons other than performance 4299 * FIXME, needs more benchmarking...there are no reasons other than performance
4300 * to keep or drop this code. 4300 * to keep or drop this code.
4301 */ 4301 */
4302void btrfs_dirty_inode(struct inode *inode) 4302void btrfs_dirty_inode(struct inode *inode, int flags)
4303{ 4303{
4304 struct btrfs_root *root = BTRFS_I(inode)->root; 4304 struct btrfs_root *root = BTRFS_I(inode)->root;
4305 struct btrfs_trans_handle *trans; 4305 struct btrfs_trans_handle *trans;
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 086b1e6b8614..5e0a3dc79a45 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -712,7 +712,7 @@ again:
712 WARN_ON(cur->checked); 712 WARN_ON(cur->checked);
713 if (!list_empty(&cur->upper)) { 713 if (!list_empty(&cur->upper)) {
714 /* 714 /*
715 * the backref was added previously when processsing 715 * the backref was added previously when processing
716 * backref of type BTRFS_TREE_BLOCK_REF_KEY 716 * backref of type BTRFS_TREE_BLOCK_REF_KEY
717 */ 717 */
718 BUG_ON(!list_is_singular(&cur->upper)); 718 BUG_ON(!list_is_singular(&cur->upper));
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 3559d0b3518a..0bb4ebbb71b7 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -39,6 +39,7 @@
39#include <linux/miscdevice.h> 39#include <linux/miscdevice.h>
40#include <linux/magic.h> 40#include <linux/magic.h>
41#include <linux/slab.h> 41#include <linux/slab.h>
42#include <linux/cleancache.h>
42#include "compat.h" 43#include "compat.h"
43#include "delayed-inode.h" 44#include "delayed-inode.h"
44#include "ctree.h" 45#include "ctree.h"
@@ -638,6 +639,7 @@ static int btrfs_fill_super(struct super_block *sb,
638 sb->s_root = root_dentry; 639 sb->s_root = root_dentry;
639 640
640 save_mount_options(sb, data); 641 save_mount_options(sb, data);
642 cleancache_init_fs(sb);
641 return 0; 643 return 0;
642 644
643fail_close: 645fail_close:
@@ -823,7 +825,7 @@ static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags,
823 } else { 825 } else {
824 char b[BDEVNAME_SIZE]; 826 char b[BDEVNAME_SIZE];
825 827
826 s->s_flags = flags; 828 s->s_flags = flags | MS_NOSEC;
827 strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id)); 829 strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id));
828 error = btrfs_fill_super(s, fs_devices, data, 830 error = btrfs_fill_super(s, fs_devices, data,
829 flags & MS_SILENT ? 1 : 0); 831 flags & MS_SILENT ? 1 : 0);