osd: prime splits/merges for any potential fabricated split/merge participant
If we have to fabricate a merge target, we need to prime any future splits
it might have. Otherwise a sequence like
- e100 1.f merge to 1.7
- e110 1.7 split to 1.f, 1.17, 1.1f
where we process all of the above in one go at, say, e120, will lead to
a crash in register_and_wake_split_child because 1.17 and/or 1.1f aren't
primed.
Fix by making identify_splits_and_merges do a recursive scan on any
merge/split participants detected too.
Fixes: http://tracker.ceph.com/issues/38483
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit
6afe4f16dbf15f84074dd4e787d182d18dbccfa6)