lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 0110/1095] mbcache: dont reclaim used entries
    Date
    From: Jan Kara <jack@suse.cz>

    commit 58318914186c157477b978b1739dfe2f1b9dc0fe upstream.

    Do not reclaim entries that are currently used by somebody from a
    shrinker. Firstly, these entries are likely useful. Secondly, we will
    need to keep such entries to protect pending increment of xattr block
    refcount.

    CC: stable@vger.kernel.org
    Fixes: 82939d7999df ("ext4: convert to mbcache2")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220712105436.32204-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/mbcache.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    --- a/fs/mbcache.c
    +++ b/fs/mbcache.c
    @@ -288,7 +288,7 @@ static unsigned long mb_cache_shrink(str
    while (nr_to_scan-- && !list_empty(&cache->c_list)) {
    entry = list_first_entry(&cache->c_list,
    struct mb_cache_entry, e_list);
    - if (entry->e_referenced) {
    + if (entry->e_referenced || atomic_read(&entry->e_refcnt) > 2) {
    entry->e_referenced = 0;
    list_move_tail(&entry->e_list, &cache->c_list);
    continue;
    @@ -302,6 +302,14 @@ static unsigned long mb_cache_shrink(str
    spin_unlock(&cache->c_list_lock);
    head = mb_cache_entry_head(cache, entry->e_key);
    hlist_bl_lock(head);
    + /* Now a reliable check if the entry didn't get used... */
    + if (atomic_read(&entry->e_refcnt) > 2) {
    + hlist_bl_unlock(head);
    + spin_lock(&cache->c_list_lock);
    + list_add_tail(&entry->e_list, &cache->c_list);
    + cache->c_entry_count++;
    + continue;
    + }
    if (!hlist_bl_unhashed(&entry->e_hash_list)) {
    hlist_bl_del_init(&entry->e_hash_list);
    atomic_dec(&entry->e_refcnt);

    \
     
     \ /
      Last update: 2022-08-15 22:26    [W:2.289 / U:0.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site