btrfs: Remove extent_io_ops::writepage_end_io_hook
authorNikolay Borisov <nborisov@suse.com>
Thu, 1 Nov 2018 12:09:48 +0000 (14:09 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Dec 2018 13:51:28 +0000 (14:51 +0100)
This callback is ony ever called for data page writeout so there is no
need to actually abstract it via extent_io_ops. Lets just export it,
remove the definition of the callback and call it directly in the
functions that invoke the callback. Also rename the function to
btrfs_writepage_endio_finish_ordered since what it really does is
account finished io in the ordered extent data structures.  No
functional changes.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/compression.c
fs/btrfs/ctree.h
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/inode.c

index 2955a4ea2fa8cb82a5969274805e9f4abbde5b3d..088570c5dfb8a5176a26f73884460c12466319f0 100644 (file)
@@ -229,7 +229,6 @@ static noinline void end_compressed_writeback(struct inode *inode,
  */
 static void end_compressed_bio_write(struct bio *bio)
 {
-       struct extent_io_tree *tree;
        struct compressed_bio *cb = bio->bi_private;
        struct inode *inode;
        struct page *page;
@@ -248,14 +247,10 @@ static void end_compressed_bio_write(struct bio *bio)
         * call back into the FS and do all the end_io operations
         */
        inode = cb->inode;
-       tree = &BTRFS_I(inode)->io_tree;
        cb->compressed_pages[0]->mapping = cb->inode->i_mapping;
-       tree->ops->writepage_end_io_hook(cb->compressed_pages[0],
-                                        cb->start,
-                                        cb->start + cb->len - 1,
-                                        NULL,
-                                        bio->bi_status ?
-                                        BLK_STS_OK : BLK_STS_NOTSUPP);
+       btrfs_writepage_endio_finish_ordered(cb->compressed_pages[0],
+                       cb->start, cb->start + cb->len - 1, NULL,
+                       bio->bi_status ? BLK_STS_OK : BLK_STS_NOTSUPP);
        cb->compressed_pages[0]->mapping = NULL;
 
        end_compressed_writeback(inode, cb);
index a10240f5910fc674360ac007b8653428ed74fb33..edcbca9cd813c137e967d170aa0546d18858200d 100644 (file)
@@ -3193,6 +3193,8 @@ int btrfs_run_delalloc_range(void *private_data, struct page *locked_page,
                u64 start, u64 end, int *page_started, unsigned long *nr_written,
                struct writeback_control *wbc);
 int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end);
+void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start,
+               u64 end, struct extent_state *state, int uptodate);
 extern const struct dentry_operations btrfs_dentry_operations;
 
 /* ioctl.c */
index 6cec272292a627ec0aab27433ef1035f59223b92..33d761ff5bd3894eb00201a5092b51a4db2cf4b2 100644 (file)
@@ -2412,14 +2412,9 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset,
 void end_extent_writepage(struct page *page, int err, u64 start, u64 end)
 {
        int uptodate = (err == 0);
-       struct extent_io_tree *tree;
        int ret = 0;
 
-       tree = &BTRFS_I(page->mapping->host)->io_tree;
-
-       if (tree->ops && tree->ops->writepage_end_io_hook)
-               tree->ops->writepage_end_io_hook(page, start, end, NULL,
-                               uptodate);
+       btrfs_writepage_endio_finish_ordered(page, start, end, NULL, uptodate);
 
        if (!uptodate) {
                ClearPageUptodate(page);
@@ -3342,9 +3337,8 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
 
        end = page_end;
        if (i_size <= start) {
-               if (tree->ops && tree->ops->writepage_end_io_hook)
-                       tree->ops->writepage_end_io_hook(page, start,
-                                                        page_end, NULL, 1);
+               btrfs_writepage_endio_finish_ordered(page, start, page_end,
+                                                    NULL, 1);
                goto done;
        }
 
@@ -3355,9 +3349,8 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
                u64 offset;
 
                if (cur >= i_size) {
-                       if (tree->ops && tree->ops->writepage_end_io_hook)
-                               tree->ops->writepage_end_io_hook(page, cur,
-                                                        page_end, NULL, 1);
+                       btrfs_writepage_endio_finish_ordered(page, cur,
+                                                            page_end, NULL, 1);
                        break;
                }
                em = btrfs_get_extent(BTRFS_I(inode), page, pg_offset, cur,
@@ -3391,11 +3384,10 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
                         * end_io notification does not happen here for
                         * compressed extents
                         */
-                       if (!compressed && tree->ops &&
-                           tree->ops->writepage_end_io_hook)
-                               tree->ops->writepage_end_io_hook(page, cur,
-                                                        cur + iosize - 1,
-                                                        NULL, 1);
+                       if (!compressed)
+                               btrfs_writepage_endio_finish_ordered(page, cur,
+                                                           cur + iosize - 1,
+                                                           NULL, 1);
                        else if (compressed) {
                                /* we don't want to end_page_writeback on
                                 * a compressed extent.  this happens
@@ -4079,10 +4071,9 @@ int extent_write_locked_range(struct inode *inode, u64 start, u64 end,
                if (clear_page_dirty_for_io(page))
                        ret = __extent_writepage(page, &wbc_writepages, &epd);
                else {
-                       if (tree->ops && tree->ops->writepage_end_io_hook)
-                               tree->ops->writepage_end_io_hook(page, start,
-                                                start + PAGE_SIZE - 1,
-                                                NULL, 1);
+                       btrfs_writepage_endio_finish_ordered(page, start,
+                                                   start + PAGE_SIZE - 1,
+                                                   NULL, 1);
                        unlock_page(page);
                }
                put_page(page);
index 4275a1061f5ac5c40f504efab5297a22343d1621..415ea7c2b0586f02f116f8ead3bf55bc7d73daba 100644 (file)
@@ -106,8 +106,6 @@ struct extent_io_ops {
        /*
         * Optional hooks, called if the pointer is not NULL
         */
-       void (*writepage_end_io_hook)(struct page *page, u64 start, u64 end,
-                                     struct extent_state *state, int uptodate);
        void (*set_bit_hook)(void *private_data, struct extent_state *state,
                             unsigned *bits);
        void (*clear_bit_hook)(void *private_data,
index 2fa1a25024faabedc8619914d1db3e39d6a01d5f..bf617503d5b73a57521681c8bd18d6b56712f97d 100644 (file)
@@ -847,14 +847,14 @@ retry:
                                    ins.offset, async_extent->pages,
                                    async_extent->nr_pages,
                                    async_cow->write_flags)) {
-                       struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
                        struct page *p = async_extent->pages[0];
                        const u64 start = async_extent->start;
                        const u64 end = start + async_extent->ram_size - 1;
 
                        p->mapping = inode->i_mapping;
-                       tree->ops->writepage_end_io_hook(p, start, end,
-                                                        NULL, 0);
+                       btrfs_writepage_endio_finish_ordered(p, start, end,
+                                                            NULL, 0);
+
                        p->mapping = NULL;
                        extent_clear_unlock_delalloc(inode, start, end, end,
                                                     NULL, 0,
@@ -3159,7 +3159,7 @@ static void finish_ordered_fn(struct btrfs_work *work)
        btrfs_finish_ordered_io(ordered_extent);
 }
 
-static void btrfs_writepage_end_io_hook(struct page *page, u64 start, u64 end,
+void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start, u64 end,
                                struct extent_state *state, int uptodate)
 {
        struct inode *inode = page->mapping->host;
@@ -10526,7 +10526,6 @@ static const struct extent_io_ops btrfs_extent_io_ops = {
        .readpage_io_failed_hook = btrfs_readpage_io_failed_hook,
 
        /* optional callbacks */
-       .writepage_end_io_hook = btrfs_writepage_end_io_hook,
        .set_bit_hook = btrfs_set_bit_hook,
        .clear_bit_hook = btrfs_clear_bit_hook,
        .merge_extent_hook = btrfs_merge_extent_hook,