lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.4 046/162] Btrfs: skip commit transaction if we don't have enough pinned bytes
    Date
    From: Liu Bo <bo.li.liu@oracle.com>

    [ Upstream commit 28785f70ef882e4798cd5706066a55dbf7adf80e ]

    We commit transaction in order to reclaim space from pinned bytes because
    it could process delayed refs, and in may_commit_transaction(), we check
    first if pinned bytes are enough for the required space, we then check if
    that plus bytes reserved for delayed insert are enough for the required
    space.

    This changes the code to the above logic.

    Fixes: b150a4f10d87 ("Btrfs: use a percpu to keep track of possibly pinned bytes")
    Tested-by: Nikolay Borisov <nborisov@suse.com>
    Reported-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    fs/btrfs/extent-tree.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
    index 260f94b019c9..875e179bb2d5 100644
    --- a/fs/btrfs/extent-tree.c
    +++ b/fs/btrfs/extent-tree.c
    @@ -4672,7 +4672,7 @@ static int may_commit_transaction(struct btrfs_root *root,

    spin_lock(&delayed_rsv->lock);
    if (percpu_counter_compare(&space_info->total_bytes_pinned,
    - bytes - delayed_rsv->size) >= 0) {
    + bytes - delayed_rsv->size) < 0) {
    spin_unlock(&delayed_rsv->lock);
    return -ENOSPC;
    }
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 03:31    [W:4.098 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site