• ChenXiaoSong's avatar
    btrfs: add might_sleep() annotations · a4c853af
    ChenXiaoSong authored
    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: default avatarChenXiaoSong <chenxiaosong2@huawei.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    a4c853af
ctree.c 131 KB