Roll back "policy" parts of the last change to eviction: a few performance tests showed regressions.  The eviction thread only tries to evict half of the candidates before looking for me, and loop for a long time before deciding the cache is stuck.
Wake up all threads waiting on a condition variable.
Try to evict if the cache is nearly full and we are at the API boundary.
lint: implicit conversion loses integer precision
rec_write.c:2567: warning: 'upd' may be used uninitialized in this function