Only trigger the eviction server to look for pages that would force eviction if regular eviction either fails or does an in-memory split.
Eviction should do update-restore if upper layers are trying to force out a page, regardless of its size.  Also, only look at ref->page after checking for exclusive access.  It is possible (but very unlikely) that a child page pointer could be replaced in the window where we are checking hazard pointers.