]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: use test_and_set_bit() in btrfs_delayed_delete_inode_ref()
authorFilipe Manana <fdmanana@suse.com>
Wed, 19 Nov 2025 12:35:10 +0000 (12:35 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 25 Nov 2025 00:53:32 +0000 (01:53 +0100)
Instead of testing and setting the BTRFS_DELAYED_NODE_DEL_IREF bit in the
delayed node's flags, use test_and_set_bit() which makes the code shorter
without compromising readability and getting rid of the label and goto.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Daniel Vacek <neelx@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/delayed-inode.c

index e77a597580c53b56ec8a8ee5ae5dba9535f1cdab..ce6e9f8812e066eb072c6d716c4d38fef715dcdc 100644 (file)
@@ -2008,13 +2008,10 @@ int btrfs_delayed_delete_inode_ref(struct btrfs_inode *inode)
         *   It is very rare.
         */
        mutex_lock(&delayed_node->mutex);
-       if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
-               goto release_node;
-
-       set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
-       delayed_node->count++;
-       atomic_inc(&fs_info->delayed_root->items);
-release_node:
+       if (!test_and_set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) {
+               delayed_node->count++;
+               atomic_inc(&fs_info->delayed_root->items);
+       }
        mutex_unlock(&delayed_node->mutex);
        btrfs_release_delayed_node(delayed_node, &delayed_node_tracker);
        return 0;