OSDN Git Service

bcache: remove member accessed from struct btree
authorColy Li <colyli@suse.de>
Thu, 23 Jan 2020 17:01:40 +0000 (01:01 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 23 Jan 2020 18:40:02 +0000 (11:40 -0700)
commit125d98edd11464c8e0ec9eaaba7d682d0f832686
tree798b83e0607ec12480b4c68a641b73050c1b2b8e
parentd44330b7f13e7f243f7d0e0426741219708ff7de
bcache: remove member accessed from struct btree

The member 'accessed' of struct btree is used in bch_mca_scan() when
shrinking btree node caches. The original idea is, if b->accessed is
set, clean it and look at next btree node cache from c->btree_cache
list, and only shrink the caches whose b->accessed is cleaned. Then
only cold btree node cache will be shrunk.

But when I/O pressure is high, it is very probably that b->accessed
of a btree node cache will be set again in bch_btree_node_get()
before bch_mca_scan() selects it again. Then there is no chance for
bch_mca_scan() to shrink enough memory back to slub or slab system.

This patch removes member accessed from struct btree, then once a
btree node ache is selected, it will be immediately shunk. By this
change, bch_mca_scan() may release btree node cahce more efficiently.

Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/bcache/btree.c
drivers/md/bcache/btree.h