btrfs: remove non-standard extent handling in __extent_writepage_io
authorChristoph Hellwig <hch@lst.de>
Wed, 31 May 2023 06:04:59 +0000 (08:04 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:35 +0000 (13:59 +0200)
__extent_writepage_io is never called for compressed or inline extents,
or holes.  Remove the not quite working code for them and replace it with
asserts that these cases don't happen.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 09a9973c27ccfb912bf1bd2f5ccdbf9285844673..a2e1dbd9b923095faf000ba2cecd1c518a919daf 100644 (file)
@@ -1361,7 +1361,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
        struct extent_map *em;
        int ret = 0;
        int nr = 0;
-       bool compressed;
 
        ret = btrfs_writepage_cow_fixup(page);
        if (ret) {
@@ -1419,10 +1418,14 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
                ASSERT(cur < end);
                ASSERT(IS_ALIGNED(em->start, fs_info->sectorsize));
                ASSERT(IS_ALIGNED(em->len, fs_info->sectorsize));
+
                block_start = em->block_start;
-               compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
                disk_bytenr = em->block_start + extent_offset;
 
+               ASSERT(!test_bit(EXTENT_FLAG_COMPRESSED, &em->flags));
+               ASSERT(block_start != EXTENT_MAP_HOLE);
+               ASSERT(block_start != EXTENT_MAP_INLINE);
+
                /*
                 * Note that em_end from extent_map_end() and dirty_range_end from
                 * find_next_dirty_byte() are all exclusive
@@ -1431,22 +1434,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
                free_extent_map(em);
                em = NULL;
 
-               /*
-                * compressed and inline extents are written through other
-                * paths in the FS
-                */
-               if (compressed || block_start == EXTENT_MAP_HOLE ||
-                   block_start == EXTENT_MAP_INLINE) {
-                       if (compressed)
-                               nr++;
-                       else
-                               btrfs_writepage_endio_finish_ordered(inode,
-                                               page, cur, cur + iosize - 1, true);
-                       btrfs_page_clear_dirty(fs_info, page, cur, iosize);
-                       cur += iosize;
-                       continue;
-               }
-
                btrfs_set_range_writeback(inode, cur, cur + iosize - 1);
                if (!PageWriteback(page)) {
                        btrfs_err(inode->root->fs_info,