Btrfs: replace tree->mapping with tree->private_data
[sfrench/cifs-2.6.git] / fs / btrfs / extent_io.c
index d3619e01000551c42bf65bd6983801a0b04423e5..70832b9b9e210c99d4b1a85a2a1ab266da27e77a 100644 (file)
@@ -87,19 +87,9 @@ void btrfs_leak_debug_check(void)
 static inline void __btrfs_debug_check_extent_io_range(const char *caller,
                struct extent_io_tree *tree, u64 start, u64 end)
 {
-       struct inode *inode;
-       u64 isize;
-
-       if (!tree->mapping)
-               return;
-
-       inode = tree->mapping->host;
-       isize = i_size_read(inode);
-       if (end >= PAGE_SIZE && (end % 2) == 0 && end != isize - 1) {
-               btrfs_debug_rl(BTRFS_I(inode)->root->fs_info,
-                   "%s: ino %llu isize %llu odd range [%llu,%llu]",
-                       caller, btrfs_ino(BTRFS_I(inode)), isize, start, end);
-       }
+       if (tree->ops && tree->ops->check_extent_io_range)
+               tree->ops->check_extent_io_range(tree->private_data, caller,
+                                                start, end);
 }
 #else
 #define btrfs_leak_debug_add(new, head)        do {} while (0)
@@ -154,9 +144,9 @@ static noinline void flush_write_bio(void *data);
 static inline struct btrfs_fs_info *
 tree_fs_info(struct extent_io_tree *tree)
 {
-       if (!tree->mapping)
-               return NULL;
-       return btrfs_sb(tree->mapping->host->i_sb);
+       if (tree->ops)
+               return tree->ops->tree_fs_info(tree->private_data);
+       return NULL;
 }
 
 int __init extent_io_init(void)
@@ -213,13 +203,13 @@ void extent_io_exit(void)
 }
 
 void extent_io_tree_init(struct extent_io_tree *tree,
-                        struct address_space *mapping)
+                        void *private_data)
 {
        tree->state = RB_ROOT;
        tree->ops = NULL;
        tree->dirty_bytes = 0;
        spin_lock_init(&tree->lock);
-       tree->mapping = mapping;
+       tree->private_data = private_data;
 }
 
 static struct extent_state *alloc_extent_state(gfp_t mask)
@@ -369,8 +359,7 @@ static void merge_cb(struct extent_io_tree *tree, struct extent_state *new,
                     struct extent_state *other)
 {
        if (tree->ops && tree->ops->merge_extent_hook)
-               tree->ops->merge_extent_hook(tree->mapping->host, new,
-                                            other);
+               tree->ops->merge_extent_hook(tree->private_data, new, other);
 }
 
 /*
@@ -421,15 +410,14 @@ static void set_state_cb(struct extent_io_tree *tree,
                         struct extent_state *state, unsigned *bits)
 {
        if (tree->ops && tree->ops->set_bit_hook)
-               tree->ops->set_bit_hook(tree->mapping->host, state, bits);
+               tree->ops->set_bit_hook(tree->private_data, state, bits);
 }
 
 static void clear_state_cb(struct extent_io_tree *tree,
                           struct extent_state *state, unsigned *bits)
 {
        if (tree->ops && tree->ops->clear_bit_hook)
-               tree->ops->clear_bit_hook(BTRFS_I(tree->mapping->host),
-                               state, bits);
+               tree->ops->clear_bit_hook(tree->private_data, state, bits);
 }
 
 static void set_state_bits(struct extent_io_tree *tree,
@@ -478,7 +466,7 @@ static void split_cb(struct extent_io_tree *tree, struct extent_state *orig,
                     u64 split)
 {
        if (tree->ops && tree->ops->split_extent_hook)
-               tree->ops->split_extent_hook(tree->mapping->host, orig, split);
+               tree->ops->split_extent_hook(tree->private_data, orig, split);
 }
 
 /*
@@ -1402,17 +1390,7 @@ void extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end)
  */
 static void set_range_writeback(struct extent_io_tree *tree, u64 start, u64 end)
 {
-       unsigned long index = start >> PAGE_SHIFT;
-       unsigned long end_index = end >> PAGE_SHIFT;
-       struct page *page;
-
-       while (index <= end_index) {
-               page = find_get_page(tree->mapping, index);
-               BUG_ON(!page); /* Pages should be in the extent_io_tree */
-               set_page_writeback(page);
-               put_page(page);
-               index++;
-       }
+       tree->ops->set_range_writeback(tree->private_data, start, end);
 }
 
 /* find the first state struct with 'bits' set after 'start', and
@@ -2431,7 +2409,7 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset,
                "Repair Read Error: submitting new read[%#x] to this_mirror=%d, in_validation=%d",
                read_mode, failrec->this_mirror, failrec->in_validation);
 
-       ret = tree->ops->submit_bio_hook(inode, bio, failrec->this_mirror,
+       ret = tree->ops->submit_bio_hook(tree->private_data, bio, failrec->this_mirror,
                                         failrec->bio_flags, 0);
        if (ret) {
                free_io_failure(BTRFS_I(inode), failrec);
@@ -2755,7 +2733,7 @@ static int __must_check submit_one_bio(struct bio *bio, int mirror_num,
        bio_get(bio);
 
        if (tree->ops)
-               ret = tree->ops->submit_bio_hook(page->mapping->host, bio,
+               ret = tree->ops->submit_bio_hook(tree->private_data, bio,
                                           mirror_num, bio_flags, start);
        else
                btrfsic_submit_bio(bio);