• E
    mbcache: correctly handle 'e_referenced' bit · 918b7306
    Eric Biggers 提交于
    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: NEric Biggers <ebiggers@google.com>
    Signed-off-by: NTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: NJan Kara <jack@suse.cz>
    918b7306
mbcache.c 12.0 KB