Commit 9283b9e0 authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba
Browse files

btrfs: remove lock protection for BLOCK_GROUP_FLAG_TO_COPY



We use this during device replace for zoned devices, we were simply
taking the lock because it was in a bit field and we needed the lock to
be safe with other modifications in the bitfield.  With the bit helpers
we no longer require that locking.

Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 3349b57f
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -545,10 +545,7 @@ static int mark_block_group_to_copy(struct btrfs_fs_info *fs_info,
		if (!cache)
			continue;

		spin_lock(&cache->lock);
		set_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags);
		spin_unlock(&cache->lock);

		btrfs_put_block_group(cache);
	}
	if (iter_ret < 0)
@@ -610,9 +607,7 @@ bool btrfs_finish_block_group_to_copy(struct btrfs_device *srcdev,
	}

	/* Last stripe on this device */
	spin_lock(&cache->lock);
	clear_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags);
	spin_unlock(&cache->lock);

	return true;
}
+0 −2
Original line number Diff line number Diff line
@@ -3755,13 +3755,11 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx,
		}

		if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) {
			spin_lock(&cache->lock);
			if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) {
				spin_unlock(&cache->lock);
				btrfs_put_block_group(cache);
				goto skip;
			}
			spin_unlock(&cache->lock);
		}

		/*
+0 −2
Original line number Diff line number Diff line
@@ -6153,9 +6153,7 @@ static bool is_block_group_to_copy(struct btrfs_fs_info *fs_info, u64 logical)

	cache = btrfs_lookup_block_group(fs_info, logical);

	spin_lock(&cache->lock);
	ret = test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags);
	spin_unlock(&cache->lock);

	btrfs_put_block_group(cache);
	return ret;