btrfs: drop get_extent from extent_page_data
[sfrench/cifs-2.6.git] / fs / btrfs / extent_io.c
index 012d63870b99acfc180ef0cd05fb337e39730959..3ecd3ab73981f26f8adf3011f2c3932553c03dd8 100644 (file)
@@ -109,8 +109,6 @@ struct tree_entry {
 struct extent_page_data {
        struct bio *bio;
        struct extent_io_tree *tree;
-       get_extent_t *get_extent;
-
        /* tells writepage not to lock the state bits for this range
         * it still does the unlocking
         */
@@ -581,7 +579,7 @@ static void extent_io_tree_panic(struct extent_io_tree *tree, int err)
  *
  * This takes the tree lock, and returns 0 on success and < 0 on error.
  */
-static int __clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
+int __clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
                              unsigned bits, int wake, int delete,
                              struct extent_state **cached_state,
                              gfp_t mask, struct extent_changeset *changeset)
@@ -1295,10 +1293,10 @@ int set_record_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
 
 int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
                     unsigned bits, int wake, int delete,
-                    struct extent_state **cached, gfp_t mask)
+                    struct extent_state **cached)
 {
        return __clear_extent_bit(tree, start, end, bits, wake, delete,
-                                 cached, mask, NULL);
+                                 cached, GFP_NOFS, NULL);
 }
 
 int clear_record_extent_bits(struct extent_io_tree *tree, u64 start, u64 end,
@@ -1348,7 +1346,7 @@ int try_lock_extent(struct extent_io_tree *tree, u64 start, u64 end)
        if (err == -EEXIST) {
                if (failed_start > start)
                        clear_extent_bit(tree, start, failed_start - 1,
-                                        EXTENT_LOCKED, 1, 0, NULL, GFP_NOFS);
+                                        EXTENT_LOCKED, 1, 0, NULL);
                return 0;
        }
        return 1;
@@ -1744,7 +1742,7 @@ void extent_clear_unlock_delalloc(struct inode *inode, u64 start, u64 end,
                                 unsigned long page_ops)
 {
        clear_extent_bit(&BTRFS_I(inode)->io_tree, start, end, clear_bits, 1, 0,
-                        NULL, GFP_NOFS);
+                        NULL);
 
        __process_pages_contig(inode->i_mapping, locked_page,
                               start >> PAGE_SHIFT, end >> PAGE_SHIFT,
@@ -3094,7 +3092,7 @@ static inline void __do_contiguous_readpages(struct extent_io_tree *tree,
                                             u64 start, u64 end,
                                             get_extent_t *get_extent,
                                             struct extent_map **em_cached,
-                                            struct bio **bio, int mirror_num,
+                                            struct bio **bio,
                                             unsigned long *bio_flags,
                                             u64 *prev_em_start)
 {
@@ -3116,7 +3114,7 @@ static inline void __do_contiguous_readpages(struct extent_io_tree *tree,
 
        for (index = 0; index < nr_pages; index++) {
                __do_readpage(tree, pages[index], get_extent, em_cached, bio,
-                             mirror_num, bio_flags, 0, prev_em_start);
+                             0, bio_flags, 0, prev_em_start);
                put_page(pages[index]);
        }
 }
@@ -3125,8 +3123,7 @@ static void __extent_readpages(struct extent_io_tree *tree,
                               struct page *pages[],
                               int nr_pages, get_extent_t *get_extent,
                               struct extent_map **em_cached,
-                              struct bio **bio, int mirror_num,
-                              unsigned long *bio_flags,
+                              struct bio **bio, unsigned long *bio_flags,
                               u64 *prev_em_start)
 {
        u64 start = 0;
@@ -3147,7 +3144,7 @@ static void __extent_readpages(struct extent_io_tree *tree,
                        __do_contiguous_readpages(tree, &pages[first_index],
                                                  index - first_index, start,
                                                  end, get_extent, em_cached,
-                                                 bio, mirror_num, bio_flags,
+                                                 bio, bio_flags,
                                                  prev_em_start);
                        start = page_start;
                        end = start + PAGE_SIZE - 1;
@@ -3159,8 +3156,7 @@ static void __extent_readpages(struct extent_io_tree *tree,
                __do_contiguous_readpages(tree, &pages[first_index],
                                          index - first_index, start,
                                          end, get_extent, em_cached, bio,
-                                         mirror_num, bio_flags,
-                                         prev_em_start);
+                                         bio_flags, prev_em_start);
 }
 
 static int __extent_read_full_page(struct extent_io_tree *tree,
@@ -3375,7 +3371,7 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
                                                         page_end, NULL, 1);
                        break;
                }
-               em = epd->get_extent(BTRFS_I(inode), page, pg_offset, cur,
+               em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, cur,
                                     end - cur + 1, 1);
                if (IS_ERR_OR_NULL(em)) {
                        SetPageError(page);
@@ -4060,14 +4056,12 @@ static noinline void flush_write_bio(void *data)
 }
 
 int extent_write_full_page(struct extent_io_tree *tree, struct page *page,
-                         get_extent_t *get_extent,
                          struct writeback_control *wbc)
 {
        int ret;
        struct extent_page_data epd = {
                .bio = NULL,
                .tree = tree,
-               .get_extent = get_extent,
                .extent_locked = 0,
                .sync_io = wbc->sync_mode == WB_SYNC_ALL,
        };
@@ -4079,8 +4073,7 @@ int extent_write_full_page(struct extent_io_tree *tree, struct page *page,
 }
 
 int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode,
-                             u64 start, u64 end, get_extent_t *get_extent,
-                             int mode)
+                             u64 start, u64 end, int mode)
 {
        int ret = 0;
        struct address_space *mapping = inode->i_mapping;
@@ -4091,7 +4084,6 @@ int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode,
        struct extent_page_data epd = {
                .bio = NULL,
                .tree = tree,
-               .get_extent = get_extent,
                .extent_locked = 1,
                .sync_io = mode == WB_SYNC_ALL,
        };
@@ -4123,14 +4115,12 @@ int extent_write_locked_range(struct extent_io_tree *tree, struct inode *inode,
 
 int extent_writepages(struct extent_io_tree *tree,
                      struct address_space *mapping,
-                     get_extent_t *get_extent,
                      struct writeback_control *wbc)
 {
        int ret = 0;
        struct extent_page_data epd = {
                .bio = NULL,
                .tree = tree,
-               .get_extent = get_extent,
                .extent_locked = 0,
                .sync_io = wbc->sync_mode == WB_SYNC_ALL,
        };
@@ -4171,12 +4161,12 @@ int extent_readpages(struct extent_io_tree *tree,
                if (nr < ARRAY_SIZE(pagepool))
                        continue;
                __extent_readpages(tree, pagepool, nr, get_extent, &em_cached,
-                                  &bio, 0, &bio_flags, &prev_em_start);
+                                  &bio, &bio_flags, &prev_em_start);
                nr = 0;
        }
        if (nr)
                __extent_readpages(tree, pagepool, nr, get_extent, &em_cached,
-                                  &bio, 0, &bio_flags, &prev_em_start);
+                                  &bio, &bio_flags, &prev_em_start);
 
        if (em_cached)
                free_extent_map(em_cached);
@@ -4209,7 +4199,7 @@ int extent_invalidatepage(struct extent_io_tree *tree,
        clear_extent_bit(tree, start, end,
                         EXTENT_LOCKED | EXTENT_DIRTY | EXTENT_DELALLOC |
                         EXTENT_DO_ACCOUNTING,
-                        1, 1, &cached_state, GFP_NOFS);
+                        1, 1, &cached_state);
        return 0;
 }
 
@@ -4234,9 +4224,9 @@ static int try_release_extent_state(struct extent_map_tree *map,
                 * at this point we can safely clear everything except the
                 * locked bit and the nodatasum bit
                 */
-               ret = clear_extent_bit(tree, start, end,
+               ret = __clear_extent_bit(tree, start, end,
                                 ~(EXTENT_LOCKED | EXTENT_NODATASUM),
-                                0, 0, NULL, mask);
+                                0, 0, NULL, mask, NULL);
 
                /* if clear_extent_bit failed for enomem reasons,
                 * we can't allow the release to continue.