btrfs: remove new_inline argument from btrfs_extent_item_to_extent_map()
authorQu Wenruo <wqu@suse.com>
Fri, 16 Sep 2022 07:28:38 +0000 (15:28 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:48 +0000 (18:00 +0100)
The argument @new_inline changes the following members of extent_map:

- em->compress_type
- EXTENT_FLAG_COMPRESSED of em->flags

However neither members makes a difference for inline extents:

- Inline extent read never use above em members

  As inside btrfs_get_extent() we directly use the file extent item to
  do the read.

- Inline extents are never to be split

  Thus code really needs em->compress_type or that flag will never be
  executed on inlined extents.
  (btrfs_drop_extent_cache() would be one example)

- Fiemap no longer relies on extent maps

  Recent fiemap optimization makes fiemap to search subvolume tree
  directly, without using any extent map at all.

  Thus those members make no difference for inline extents any more.

Furthermore such exception without much explanation is really a source
of confusion.

Thus this patch will completely remove the argument, and always set the
involved members, unifying the behavior.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/defrag.c
fs/btrfs/file-item.c
fs/btrfs/file-item.h
fs/btrfs/inode.c

index 48a9460d49c779939842262df391f4292e9591cf..919dfe0f7e5054caaabc4e00b3696c423f7cfa8d 100644 (file)
@@ -582,7 +582,7 @@ iterate:
                        goto next;
 
                /* Now this extent covers @start, convert it to em */
-               btrfs_extent_item_to_extent_map(inode, &path, fi, false, em);
+               btrfs_extent_item_to_extent_map(inode, &path, fi, em);
                break;
 next:
                ret = btrfs_next_item(root, &path);
index 036d50af5666cd4c83172740f6817d735d011211..456f71b42a9c8401a235eba56e78e15bf7b69d25 100644 (file)
@@ -1214,7 +1214,6 @@ out:
 void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
                                     const struct btrfs_path *path,
                                     struct btrfs_file_extent_item *fi,
-                                    const bool new_inline,
                                     struct extent_map *em)
 {
        struct btrfs_fs_info *fs_info = inode->root->fs_info;
@@ -1266,10 +1265,9 @@ void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
                 */
                em->orig_start = EXTENT_MAP_HOLE;
                em->block_len = (u64)-1;
-               if (!new_inline && compress_type != BTRFS_COMPRESS_NONE) {
+               em->compress_type = compress_type;
+               if (compress_type != BTRFS_COMPRESS_NONE)
                        set_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
-                       em->compress_type = compress_type;
-               }
        } else {
                btrfs_err(fs_info,
                          "unknown file extent item type %d, inode %llu, offset %llu, "
index 51cd3ab5948ce6bf0e3c4b247d58ee36315d1cbe..ba12711cf93376c095d1594f9607fb9845736f4e 100644 (file)
@@ -24,7 +24,6 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
 void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
                                     const struct btrfs_path *path,
                                     struct btrfs_file_extent_item *fi,
-                                    const bool new_inline,
                                     struct extent_map *em);
 int btrfs_inode_clear_file_extent_range(struct btrfs_inode *inode, u64 start,
                                        u64 len);
index 5b45eb141215e619ba79f5d7284a8fd1f1a06bb1..0ab899132dbfbd25f422218b0a4198918efa2138 100644 (file)
@@ -7058,7 +7058,7 @@ next:
                goto insert;
        }
 
-       btrfs_extent_item_to_extent_map(inode, path, item, !page, em);
+       btrfs_extent_item_to_extent_map(inode, path, item, em);
 
        if (extent_type == BTRFS_FILE_EXTENT_REG ||
            extent_type == BTRFS_FILE_EXTENT_PREALLOC) {