aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/disk-io.c8
-rw-r--r--fs/btrfs/disk-io.h3
-rw-r--r--fs/btrfs/extent_io.c6
-rw-r--r--fs/btrfs/extent_io.h2
4 files changed, 11 insertions, 8 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 06c593775b82..cbf37df05a88 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -220,7 +220,7 @@ void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb,
220 * extents on the btree inode are pretty simple, there's one extent 220 * extents on the btree inode are pretty simple, there's one extent
221 * that covers the entire device 221 * that covers the entire device
222 */ 222 */
223static struct extent_map *btree_get_extent(struct btrfs_inode *inode, 223struct extent_map *btree_get_extent(struct btrfs_inode *inode,
224 struct page *page, size_t pg_offset, u64 start, u64 len, 224 struct page *page, size_t pg_offset, u64 start, u64 len,
225 int create) 225 int create)
226{ 226{
@@ -455,7 +455,7 @@ static int btree_read_extent_buffer_pages(struct btrfs_fs_info *fs_info,
455 io_tree = &BTRFS_I(fs_info->btree_inode)->io_tree; 455 io_tree = &BTRFS_I(fs_info->btree_inode)->io_tree;
456 while (1) { 456 while (1) {
457 ret = read_extent_buffer_pages(io_tree, eb, WAIT_COMPLETE, 457 ret = read_extent_buffer_pages(io_tree, eb, WAIT_COMPLETE,
458 btree_get_extent, mirror_num); 458 mirror_num);
459 if (!ret) { 459 if (!ret) {
460 if (!verify_parent_transid(io_tree, eb, 460 if (!verify_parent_transid(io_tree, eb,
461 parent_transid, 0)) 461 parent_transid, 0))
@@ -1012,7 +1012,7 @@ void readahead_tree_block(struct btrfs_fs_info *fs_info, u64 bytenr)
1012 if (IS_ERR(buf)) 1012 if (IS_ERR(buf))
1013 return; 1013 return;
1014 read_extent_buffer_pages(&BTRFS_I(btree_inode)->io_tree, 1014 read_extent_buffer_pages(&BTRFS_I(btree_inode)->io_tree,
1015 buf, WAIT_NONE, btree_get_extent, 0); 1015 buf, WAIT_NONE, 0);
1016 free_extent_buffer(buf); 1016 free_extent_buffer(buf);
1017} 1017}
1018 1018
@@ -1031,7 +1031,7 @@ int reada_tree_block_flagged(struct btrfs_fs_info *fs_info, u64 bytenr,
1031 set_bit(EXTENT_BUFFER_READAHEAD, &buf->bflags); 1031 set_bit(EXTENT_BUFFER_READAHEAD, &buf->bflags);
1032 1032
1033 ret = read_extent_buffer_pages(io_tree, buf, WAIT_PAGE_LOCK, 1033 ret = read_extent_buffer_pages(io_tree, buf, WAIT_PAGE_LOCK,
1034 btree_get_extent, mirror_num); 1034 mirror_num);
1035 if (ret) { 1035 if (ret) {
1036 free_extent_buffer(buf); 1036 free_extent_buffer(buf);
1037 return ret; 1037 return ret;
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h
index 7f7c35d6347a..301151a50ac1 100644
--- a/fs/btrfs/disk-io.h
+++ b/fs/btrfs/disk-io.h
@@ -149,6 +149,9 @@ struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans,
149 u64 objectid); 149 u64 objectid);
150int btree_lock_page_hook(struct page *page, void *data, 150int btree_lock_page_hook(struct page *page, void *data,
151 void (*flush_fn)(void *)); 151 void (*flush_fn)(void *));
152struct extent_map *btree_get_extent(struct btrfs_inode *inode,
153 struct page *page, size_t pg_offset, u64 start, u64 len,
154 int create);
152int btrfs_get_num_tolerated_disk_barrier_failures(u64 flags); 155int btrfs_get_num_tolerated_disk_barrier_failures(u64 flags);
153int __init btrfs_end_io_wq_init(void); 156int __init btrfs_end_io_wq_init(void);
154void btrfs_end_io_wq_exit(void); 157void btrfs_end_io_wq_exit(void);
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index eda8fe363132..932d805a81e3 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -21,6 +21,7 @@
21#include "locking.h" 21#include "locking.h"
22#include "rcu-string.h" 22#include "rcu-string.h"
23#include "backref.h" 23#include "backref.h"
24#include "disk-io.h"
24 25
25static struct kmem_cache *extent_state_cache; 26static struct kmem_cache *extent_state_cache;
26static struct kmem_cache *extent_buffer_cache; 27static struct kmem_cache *extent_buffer_cache;
@@ -5248,8 +5249,7 @@ int extent_buffer_uptodate(struct extent_buffer *eb)
5248} 5249}
5249 5250
5250int read_extent_buffer_pages(struct extent_io_tree *tree, 5251int read_extent_buffer_pages(struct extent_io_tree *tree,
5251 struct extent_buffer *eb, int wait, 5252 struct extent_buffer *eb, int wait, int mirror_num)
5252 get_extent_t *get_extent, int mirror_num)
5253{ 5253{
5254 unsigned long i; 5254 unsigned long i;
5255 struct page *page; 5255 struct page *page;
@@ -5309,7 +5309,7 @@ int read_extent_buffer_pages(struct extent_io_tree *tree,
5309 5309
5310 ClearPageError(page); 5310 ClearPageError(page);
5311 err = __extent_read_full_page(tree, page, 5311 err = __extent_read_full_page(tree, page,
5312 get_extent, &bio, 5312 btree_get_extent, &bio,
5313 mirror_num, &bio_flags, 5313 mirror_num, &bio_flags,
5314 REQ_META); 5314 REQ_META);
5315 if (err) { 5315 if (err) {
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h
index 6cf4a0e5b0ea..c28f5ef88f42 100644
--- a/fs/btrfs/extent_io.h
+++ b/fs/btrfs/extent_io.h
@@ -435,7 +435,7 @@ void free_extent_buffer_stale(struct extent_buffer *eb);
435#define WAIT_PAGE_LOCK 2 435#define WAIT_PAGE_LOCK 2
436int read_extent_buffer_pages(struct extent_io_tree *tree, 436int read_extent_buffer_pages(struct extent_io_tree *tree,
437 struct extent_buffer *eb, int wait, 437 struct extent_buffer *eb, int wait,
438 get_extent_t *get_extent, int mirror_num); 438 int mirror_num);
439void wait_on_extent_buffer_writeback(struct extent_buffer *eb); 439void wait_on_extent_buffer_writeback(struct extent_buffer *eb);
440 440
441static inline unsigned long num_extent_pages(u64 start, u64 len) 441static inline unsigned long num_extent_pages(u64 start, u64 len)