ext4: call ext4_es_lru_add() after handling cache miss
authorTheodore Ts'o <tytso@mit.edu>
Tue, 16 Jul 2013 14:28:47 +0000 (10:28 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 16 Jul 2013 14:28:47 +0000 (10:28 -0400)
commit63b999685cb372e24eb73f255cd73547026370fd
tree92053ac3ca2fa7ba351fce31d558ba13cc37926d
parent76828c882630ced08b5ddce22cc0095b05de9bc5
ext4: call ext4_es_lru_add() after handling cache miss

If there are no items in the extent status tree, ext4_es_lru_add() is
a no-op.  So it is not sufficient to call ext4_es_lru_add() before we
try to lookup an entry in the extent status tree.  We also need to
call it at the end of ext4_ext_map_blocks(), after items have been
added to the extent status tree.

This could lead to inodes with that have extent status trees but which
are not in the LRU list, which means they won't get considered for
eviction by the es_shrinker.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: Zheng Liu <wenqing.lz@taobao.com>
Cc: stable@vger.kernel.org
fs/ext4/extents.c
fs/ext4/inode.c