]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: reset block group chunk force if we have to wait
authorJosef Bacik <josef@toxicpanda.com>
Mon, 13 Jun 2022 22:31:17 +0000 (18:31 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:18:11 +0000 (11:18 +0200)
commit564776d564e6f3f4db0dd6286bbf27d18a6b5c5d
treec476ca5c34cb69f95a0a6866f25a11be709392a7
parentb95992342afa74c80e85ad303577d8aded6a9647
btrfs: reset block group chunk force if we have to wait

commit b458761ba924e524f93716713eae84498044e340 upstream.

If you try to force a chunk allocation, but you race with another chunk
allocation, you will end up waiting on the chunk allocation that just
occurred and then allocate another chunk.  If you have many threads all
doing this at once you can way over-allocate chunks.

Fix this by resetting force to NO_FORCE, that way if we think we need to
allocate we can, otherwise we don't force another chunk allocation if
one is already happening.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
CC: stable@vger.kernel.org # 5.4+
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/block-group.c