Patch "btrfs: add might_sleep() annotations" has been added to the 5.15-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: add might_sleep() annotations

to the 5.15-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-add-might_sleep-annotations.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 5e0677569d3f16e57d4a8ee631057a2965056cea
Author: ChenXiaoSong <chenxiaosong2@xxxxxxxxxx>
Date:   Wed Nov 16 22:23:53 2022 +0800

    btrfs: add might_sleep() annotations
    
    [ Upstream commit a4c853af0c511d7e0f7cb306bbc8a4f1dbdb64ca ]
    
    Add annotations to functions that might sleep due to allocations or IO
    and could be called from various contexts. In case of btrfs_search_slot
    it's not obvious why it would sleep:
    
        btrfs_search_slot
          setup_nodes_for_search
            reada_for_balance
              btrfs_readahead_node_child
                btrfs_readahead_tree_block
                  btrfs_find_create_tree_block
                    alloc_extent_buffer
                      kmem_cache_zalloc
                        /* allocate memory non-atomically, might sleep */
                        kmem_cache_alloc(GFP_NOFS|__GFP_NOFAIL|__GFP_ZERO)
                  read_extent_buffer_pages
                    submit_extent_page
                      /* disk IO, might sleep */
                      submit_one_bio
    
    Other examples where the sleeping could happen is in 3 places might
    sleep in update_qgroup_limit_item(), as shown below:
    
      update_qgroup_limit_item
        btrfs_alloc_path
          /* allocate memory non-atomically, might sleep */
          kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS)
    
    Signed-off-by: ChenXiaoSong <chenxiaosong2@xxxxxxxxxx>
    Reviewed-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: David Sterba <dsterba@xxxxxxxx>
    Stable-dep-of: 3ed51857a50f ("btrfs: add a sanity check for btrfs root in btrfs_search_slot()")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index 0b8c8b5094efb..af6ddf1f913ae 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -76,6 +76,8 @@ size_t __attribute_const__ btrfs_get_num_csums(void)
 
 struct btrfs_path *btrfs_alloc_path(void)
 {
+	might_sleep();
+
 	return kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS);
 }
 
@@ -1774,6 +1776,8 @@ int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root,
 	int min_write_lock_level;
 	int prev_cmp;
 
+	might_sleep();
+
 	lowest_level = p->lowest_level;
 	WARN_ON(lowest_level && ins_len > 0);
 	WARN_ON(p->nodes[0] != NULL);




[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