sheep: implement a correct detection of object cache pushing completion

Current implementation for pushing object cache would have a bug. In
object_cache_push(), the variable oc->push_count is incremented in the
loop of queuing work. This can produce a non deterministic bug when
a sequence of scheduling like below happens:

1. object_cache_push() creates a work and queue it to
   sys->oc_push_wqueue (oc->push_count == 1)
2. Before queuing next work, a worker thread of oc_push_wqueue wakes
   up and pushes the object
3. After completion of pushing, the worker thread decrements
   oc->push_count atomically. The thread calls eventfd_write() because
   oc->push_count is 0.
4. The thread which calls object_cache_push() detects an invalid
   completion after its queuing iteration.

This sequence can produce an invalid early finish of flush request
from VMs, especially when a number of cached object is large.

Cc: Luca Lazzeroni <luca@gvnet.it>
Signed-off-by: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>