Skip to content
  • Eric Biggers's avatar
    mbcache: correctly handle 'e_referenced' bit · 918b7306
    Eric Biggers authored
    
    
    mbcache entries have an 'e_referenced' bit which users can set with
    mb_cache_entry_touch() to indicate that an entry should be given another
    pass through the LRU list before the shrinker can delete it.  However,
    mb_cache_shrink() actually would, when seeing an e_referenced entry at
    the front of the list (the least-recently used end), place it right at
    the front of the list again.  The next iteration would then remove the
    entry from the list and delete it.  Consequently, e_referenced had
    essentially no effect, so ext2/ext4 xattr blocks would sometimes not be
    reused as often as expected.
    
    Fix this by making the shrinker move e_referenced entries to the back of
    the list rather than the front.
    
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    918b7306