osd: wait recovery of all snapshots when reference_chunk is called
If a user sends reference_chunk() to the original object
(not manifest object) which has not recovered snapshots,
the OSD triggers assert() because
reference_chunk() try to find adjacent unrecovered clones,
resulting in the assert().
This is because the original object does not wait the recovery
of snapshots.
To avoid this, this commit add a condition to check a base snapshot
is readable whether the object is manifest or not.
If the base snapshot is valid and the snapshot is manifest
, osd try to calculate reference count.