diff options
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/ctree.h | 2 | ||||
-rw-r--r-- | fs/btrfs/extent_io.c | 10 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 2 | ||||
-rw-r--r-- | fs/btrfs/relocation.c | 2 | ||||
-rw-r--r-- | fs/btrfs/super.c | 4 |
5 files changed, 16 insertions, 4 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 8e948ec1ee6b..300628795fdb 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -2549,7 +2549,7 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); | |||
2549 | int btrfs_readpage(struct file *file, struct page *page); | 2549 | int btrfs_readpage(struct file *file, struct page *page); |
2550 | void btrfs_evict_inode(struct inode *inode); | 2550 | void btrfs_evict_inode(struct inode *inode); |
2551 | int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); | 2551 | int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); |
2552 | void btrfs_dirty_inode(struct inode *inode); | 2552 | void btrfs_dirty_inode(struct inode *inode, int flags); |
2553 | struct inode *btrfs_alloc_inode(struct super_block *sb); | 2553 | struct inode *btrfs_alloc_inode(struct super_block *sb); |
2554 | void btrfs_destroy_inode(struct inode *inode); | 2554 | void btrfs_destroy_inode(struct inode *inode); |
2555 | int btrfs_drop_inode(struct inode *inode); | 2555 | int 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 | } |
2114 | out: | ||
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 5813dec5101c..0a9b10c5b0a7 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4291,7 +4291,7 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc) | |||
4291 | * FIXME, needs more benchmarking...there are no reasons other than performance | 4291 | * FIXME, needs more benchmarking...there are no reasons other than performance |
4292 | * to keep or drop this code. | 4292 | * to keep or drop this code. |
4293 | */ | 4293 | */ |
4294 | void btrfs_dirty_inode(struct inode *inode) | 4294 | void btrfs_dirty_inode(struct inode *inode, int flags) |
4295 | { | 4295 | { |
4296 | struct btrfs_root *root = BTRFS_I(inode)->root; | 4296 | struct btrfs_root *root = BTRFS_I(inode)->root; |
4297 | struct btrfs_trans_handle *trans; | 4297 | 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 | ||
643 | fail_close: | 645 | fail_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); |