Patch "btrfs: reset block group chunk force if we have to wait" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    btrfs: reset block group chunk force if we have to wait

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     btrfs-reset-block-group-chunk-force-if-we-have-to-wa.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7571d5dd0a26d5d3be0155c12bb552ff4a80193d
Author: Josef Bacik <josef@xxxxxxxxxxxxxx>
Date:   Mon Jun 13 18:31:17 2022 -0400

    btrfs: reset block group chunk force if we have to wait
    
    [ Upstream commit 1314ca78b2c35d3e7d0f097268a2ee6dc0d369ef ]
    
    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@xxxxxxxx>
    CC: stable@xxxxxxxxxxxxxxx # 5.4+
    Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
    Signed-off-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index e351f5319950..889a598b17f6 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -3126,6 +3126,7 @@ int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
 			 * attempt.
 			 */
 			wait_for_alloc = true;
+			force = CHUNK_ALLOC_NO_FORCE;
 			spin_unlock(&space_info->lock);
 			mutex_lock(&fs_info->chunk_mutex);
 			mutex_unlock(&fs_info->chunk_mutex);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux