object cache: drop dirty tree

We don't need it because we can rely object tree to find cache entry. And we
don't search dirty tree.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: clean up cache for format operation

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: clean up and fix cache size calculation

We need to subtrack the object for deletion.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: fix false reclaim after sheep restart

false reclaim will drop possible dirty objects as clean object  after restart
and lead to various guest problems.

We don't know VM's cache type after restarting, so we assume that it is
writeback and mark all the objects diry to avoid false reclaim. Donot try to
reclaim at loading phase becaue cluster isn't fully working.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: use a per vdi lru list for reclaimer

Our urculist usage is wrong and would cause random segfault:
1) no rcu_read_lock() projection
2) it only supports single writer, multiple reader
3) don't surpport sleep in list iteration

Switch to a per vdi list and use pthread rw lock instead. Also do some code
clean-ups.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: delay reclaimer for a newly pulled object

We try to delay reclaim objects to avoid object ping-pong because the pulled
object is clean and likely to be reclaimed in a cache over high watermark. We
can't simply pass without waking up reclaimer because the cache is easy to be
filled full with a read storm.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
object cache: clean up object_cache_{pull,lookup}

Also Set cache high watermark as 90% to be large cache friendly.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>