lkml.org 
[lkml]   [2020]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 074/191] bcache: at least try to shrink 1 node in bch_mca_scan()
    Date
    From: Coly Li <colyli@suse.de>

    [ Upstream commit 9fcc34b1a6dd4b8e5337e2b6ef45e428897eca6b ]

    In bch_mca_scan(), the number of shrinking btree node is calculated
    by code like this,
    unsigned long nr = sc->nr_to_scan;

    nr /= c->btree_pages;
    nr = min_t(unsigned long, nr, mca_can_free(c));
    variable sc->nr_to_scan is number of objects (here is bcache B+tree
    nodes' number) to shrink, and pointer variable sc is sent from memory
    management code as parametr of a callback.

    If sc->nr_to_scan is smaller than c->btree_pages, after the above
    calculation, variable 'nr' will be 0 and nothing will be shrunk. It is
    frequeently observed that only 1 or 2 is set to sc->nr_to_scan and make
    nr to be zero. Then bch_mca_scan() will do nothing more then acquiring
    and releasing mutex c->bucket_lock.

    This patch checkes whether nr is 0 after the above calculation, if 0
    is the result then set 1 to variable 'n'. Then at least bch_mca_scan()
    will try to shrink a single B+tree node.

    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/md/bcache/btree.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
    index ba434d9ac720..46a8b5a91c38 100644
    --- a/drivers/md/bcache/btree.c
    +++ b/drivers/md/bcache/btree.c
    @@ -723,6 +723,8 @@ static unsigned long bch_mca_scan(struct shrinker *shrink,
    * IO can always make forward progress:
    */
    nr /= c->btree_pages;
    + if (nr == 0)
    + nr = 1;
    nr = min_t(unsigned long, nr, mca_can_free(c));

    i = 0;
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-03 00:00    [W:3.299 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site