lkml.org 
[lkml]   [2020]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 129/186] btrfs: set the lockdep class for log tree extent buffers
    Date
    From: Josef Bacik <josef@toxicpanda.com>

    commit d3beaa253fd6fa40b8b18a216398e6e5376a9d21 upstream.

    These are special extent buffers that get rewound in order to lookup
    the state of the tree at a specific point in time. As such they do not
    go through the normal initialization paths that set their lockdep class,
    so handle them appropriately when they are created and before they are
    locked.

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

    ---
    fs/btrfs/ctree.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    --- a/fs/btrfs/ctree.c
    +++ b/fs/btrfs/ctree.c
    @@ -1297,6 +1297,8 @@ tree_mod_log_rewind(struct btrfs_fs_info
    btrfs_tree_read_unlock_blocking(eb);
    free_extent_buffer(eb);

    + btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb_rewin),
    + eb_rewin, btrfs_header_level(eb_rewin));
    btrfs_tree_read_lock(eb_rewin);
    __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm);
    WARN_ON(btrfs_header_nritems(eb_rewin) >
    @@ -1370,7 +1372,6 @@ get_old_root(struct btrfs_root *root, u6

    if (!eb)
    return NULL;
    - btrfs_tree_read_lock(eb);
    if (old_root) {
    btrfs_set_header_bytenr(eb, eb->start);
    btrfs_set_header_backref_rev(eb, BTRFS_MIXED_BACKREF_REV);
    @@ -1378,6 +1379,9 @@ get_old_root(struct btrfs_root *root, u6
    btrfs_set_header_level(eb, old_root->level);
    btrfs_set_header_generation(eb, old_generation);
    }
    + btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb), eb,
    + btrfs_header_level(eb));
    + btrfs_tree_read_lock(eb);
    if (tm)
    __tree_mod_log_rewind(fs_info, eb, time_seq, tm);
    else

    \
     
     \ /
      Last update: 2020-09-08 21:16    [W:4.050 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site