Commit 9c78fe4a authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba
Browse files

btrfs: use test_and_set_bit() in btrfs_delayed_delete_inode_ref()



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: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarDaniel Vacek <neelx@suse.com>
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 70085399
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -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);
	if (!test_and_set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) {
		delayed_node->count++;
		atomic_inc(&fs_info->delayed_root->items);
release_node:
	}
	mutex_unlock(&delayed_node->mutex);
	btrfs_release_delayed_node(delayed_node, &delayed_node_tracker);
	return 0;