Hi Alexandre,
I don't think this patch needs the LRU. Backends already call
smgrdestroyall() at transaction end, and bgwriter and checkpointer do it
after each checkpoint, so the IO worker is the one process that never
cleans up, and v3 bounds it with the entry cap and the idle cleanup.
Touching an LRU and calling FirstCallSinceLastCheckpoint() on every IO
puts work back in the hot path, which is what Andres objected to as well.