lkml.org 
[lkml]   [2017]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 148/370] btrfs: fix locking when we put back a delayed ref that's too new
    3.16.42-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jeff Mahoney <jeffm@suse.com>

    commit d0280996437081dd12ed1e982ac8aeaa62835ec4 upstream.

    In __btrfs_run_delayed_refs, when we put back a delayed ref that's too
    new, we have already dropped the lock on locked_ref when we set
    ->processing = 0.

    This patch keeps the lock to cover that assignment.

    Fixes: d7df2c796d7 (Btrfs: attach delayed ref updates to delayed ref heads)
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    fs/btrfs/extent-tree.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/btrfs/extent-tree.c
    +++ b/fs/btrfs/extent-tree.c
    @@ -2429,11 +2429,11 @@ static noinline int __btrfs_run_delayed_
    if (ref && ref->seq &&
    btrfs_check_delayed_seq(fs_info, delayed_refs, ref->seq)) {
    spin_unlock(&locked_ref->lock);
    - btrfs_delayed_ref_unlock(locked_ref);
    spin_lock(&delayed_refs->lock);
    locked_ref->processing = 0;
    delayed_refs->num_heads_ready++;
    spin_unlock(&delayed_refs->lock);
    + btrfs_delayed_ref_unlock(locked_ref);
    locked_ref = NULL;
    cond_resched();
    count++;
    \
     
     \ /
      Last update: 2017-03-10 13:48    [W:4.218 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site