]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: remove no longer needed strict argument from can_nocow_extent()
authorFilipe Manana <fdmanana@suse.com>
Mon, 9 Dec 2024 14:54:51 +0000 (14:54 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 13 Jan 2025 13:53:16 +0000 (14:53 +0100)
All callers of can_nocow_extent() now pass a value of false for its
'strict' argument, making it redundant. So remove the argument from
can_nocow_extent() as well as can_nocow_file_extent(),
btrfs_cross_ref_exist() and check_committed_ref(), because this
argument was used just to influence the behavior of check_committed_ref().
Also remove the 'strict' field from struct can_nocow_file_extent_args,
which is now always false as well, as its value is taken from the
argument to can_nocow_extent().

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/btrfs_inode.h
fs/btrfs/direct-io.c
fs/btrfs/extent-tree.c
fs/btrfs/extent-tree.h
fs/btrfs/file.c
fs/btrfs/inode.c

index aa1f55cd81b7924e6083306ff521951775eb1dde..b2fa33911c280a044a562e3b49f523323f9cb10a 100644 (file)
@@ -526,7 +526,7 @@ bool btrfs_data_csum_ok(struct btrfs_bio *bbio, struct btrfs_device *dev,
                        u32 bio_offset, struct bio_vec *bv);
 noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
                              struct btrfs_file_extent *file_extent,
-                             bool nowait, bool strict);
+                             bool nowait);
 
 void btrfs_del_delalloc_inode(struct btrfs_inode *inode);
 struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry);
index a7c3e221378db78c0ff2a04ccb3dbf97c8d5ca8d..8567af46e16f619e88b851f46650c775367ea79e 100644 (file)
@@ -248,8 +248,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
                len = min(len, em->len - (start - em->start));
                block_start = extent_map_block_start(em) + (start - em->start);
 
-               if (can_nocow_extent(inode, start, &len,
-                                    &file_extent, false, false) == 1) {
+               if (can_nocow_extent(inode, start, &len, &file_extent, false) == 1) {
                        bg = btrfs_inc_nocow_writers(fs_info, block_start);
                        if (bg)
                                can_nocow = true;
index 2f9126528a0170f4d3202436499e814469093c0d..46a3a4a4536b6fa43fb6404ef324a08c5fb0566f 100644 (file)
@@ -2296,8 +2296,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
 
 static noinline int check_committed_ref(struct btrfs_root *root,
                                        struct btrfs_path *path,
-                                       u64 objectid, u64 offset, u64 bytenr,
-                                       bool strict)
+                                       u64 objectid, u64 offset, u64 bytenr)
 {
        struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_root *extent_root = btrfs_extent_root(fs_info, bytenr);
@@ -2361,11 +2360,10 @@ static noinline int check_committed_ref(struct btrfs_root *root,
 
        /*
         * If extent created before last snapshot => it's shared unless the
-        * snapshot has been deleted. Use the heuristic if strict is false.
+        * snapshot has been deleted.
         */
-       if (!strict &&
-           (btrfs_extent_generation(leaf, ei) <=
-            btrfs_root_last_snapshot(&root->root_item)))
+       if (btrfs_extent_generation(leaf, ei) <=
+           btrfs_root_last_snapshot(&root->root_item))
                goto out;
 
        /* If this extent has SHARED_DATA_REF then it's shared */
@@ -2387,13 +2385,12 @@ out:
 }
 
 int btrfs_cross_ref_exist(struct btrfs_root *root, u64 objectid, u64 offset,
-                         u64 bytenr, bool strict, struct btrfs_path *path)
+                         u64 bytenr, struct btrfs_path *path)
 {
        int ret;
 
        do {
-               ret = check_committed_ref(root, path, objectid,
-                                         offset, bytenr, strict);
+               ret = check_committed_ref(root, path, objectid, offset, bytenr);
                if (ret && ret != -ENOENT)
                        goto out;
 
index 2ad51130c037e5835705741e8bd49b5e99bce1f0..ee62035c4a7154c23feb258988d126553ea87b80 100644 (file)
@@ -117,7 +117,7 @@ int btrfs_pin_extent_for_log_replay(struct btrfs_trans_handle *trans,
                                    const struct extent_buffer *eb);
 int btrfs_exclude_logged_extents(struct extent_buffer *eb);
 int btrfs_cross_ref_exist(struct btrfs_root *root,
-                         u64 objectid, u64 offset, u64 bytenr, bool strict,
+                         u64 objectid, u64 offset, u64 bytenr,
                          struct btrfs_path *path);
 struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
                                             struct btrfs_root *root,
index 3c00dc48b925e99acd6e3ef6d6bf17ef98d3002c..4775a17c4ee1445554afaabe3d6274bdf104f47c 100644 (file)
@@ -1023,7 +1023,7 @@ int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos,
                                                   &cached_state);
        }
        ret = can_nocow_extent(&inode->vfs_inode, lockstart, &num_bytes,
-                              NULL, nowait, false);
+                              NULL, nowait);
        if (ret <= 0)
                btrfs_drew_write_unlock(&root->snapshot_lock);
        else
index 283199d11642eb59c16f63dfde89fbdb7cdf1d98..0965a29cf4f71284917f6e03407006c6e93d52f0 100644 (file)
@@ -1837,7 +1837,6 @@ struct can_nocow_file_extent_args {
        /* End file offset (inclusive) of the range we want to NOCOW. */
        u64 end;
        bool writeback_path;
-       bool strict;
        /*
         * Free the path passed to can_nocow_file_extent() once it's not needed
         * anymore.
@@ -1892,8 +1891,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
         * for its subvolume was created, then this implies the extent is shared,
         * hence we must COW.
         */
-       if (!args->strict &&
-           btrfs_file_extent_generation(leaf, fi) <=
+       if (btrfs_file_extent_generation(leaf, fi) <=
            btrfs_root_last_snapshot(&root->root_item))
                goto out;
 
@@ -1924,7 +1922,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
 
        ret = btrfs_cross_ref_exist(root, btrfs_ino(inode),
                                    key->offset - args->file_extent.offset,
-                                   args->file_extent.disk_bytenr, args->strict, path);
+                                   args->file_extent.disk_bytenr, path);
        WARN_ON_ONCE(ret > 0 && is_freespace_inode);
        if (ret != 0)
                goto out;
@@ -7011,8 +7009,6 @@ static bool btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr)
  * @orig_start:        (optional) Return the original file offset of the file extent
  * @orig_len:  (optional) Return the original on-disk length of the file extent
  * @ram_bytes: (optional) Return the ram_bytes of the file extent
- * @strict:    if true, omit optimizations that might force us into unnecessary
- *             cow. e.g., don't trust generation number.
  *
  * Return:
  * >0  and update @len if we can do nocow write
@@ -7024,7 +7020,7 @@ static bool btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr)
  */
 noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
                              struct btrfs_file_extent *file_extent,
-                             bool nowait, bool strict)
+                             bool nowait)
 {
        struct btrfs_fs_info *fs_info = inode_to_fs_info(inode);
        struct can_nocow_file_extent_args nocow_args = { 0 };
@@ -7077,7 +7073,6 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
 
        nocow_args.start = offset;
        nocow_args.end = offset + *len - 1;
-       nocow_args.strict = strict;
        nocow_args.free_path = true;
 
        ret = can_nocow_file_extent(path, &key, BTRFS_I(inode), &nocow_args);