lkml.org 
[lkml]   [2018]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 015/123] btrfs: use correct compare function of dirty_metadata_bytes
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

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

    From: Ethan Lien <ethanlien@synology.com>

    commit d814a49198eafa6163698bdd93961302f3a877a4 upstream.

    We use customized, nodesize batch value to update dirty_metadata_bytes.
    We should also use batch version of compare function or we will easily
    goto fast path and get false result from percpu_counter_compare().

    Fixes: e2d845211eda ("Btrfs: use percpu counter for dirty metadata count")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Ethan Lien <ethanlien@synology.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/btrfs/disk-io.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    --- a/fs/btrfs/disk-io.c
    +++ b/fs/btrfs/disk-io.c
    @@ -961,8 +961,9 @@ static int btree_writepages(struct addre

    fs_info = BTRFS_I(mapping->host)->root->fs_info;
    /* this is a bit racy, but that's ok */
    - ret = percpu_counter_compare(&fs_info->dirty_metadata_bytes,
    - BTRFS_DIRTY_METADATA_THRESH);
    + ret = __percpu_counter_compare(&fs_info->dirty_metadata_bytes,
    + BTRFS_DIRTY_METADATA_THRESH,
    + fs_info->dirty_metadata_batch);
    if (ret < 0)
    return 0;
    }
    @@ -4150,8 +4151,9 @@ static void __btrfs_btree_balance_dirty(
    if (flush_delayed)
    btrfs_balance_delayed_items(fs_info);

    - ret = percpu_counter_compare(&fs_info->dirty_metadata_bytes,
    - BTRFS_DIRTY_METADATA_THRESH);
    + ret = __percpu_counter_compare(&fs_info->dirty_metadata_bytes,
    + BTRFS_DIRTY_METADATA_THRESH,
    + fs_info->dirty_metadata_batch);
    if (ret > 0) {
    balance_dirty_pages_ratelimited(fs_info->btree_inode->i_mapping);
    }

    \
     
     \ /
      Last update: 2018-09-03 19:45    [W:6.919 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site