osd/PG: adjust pg history on fabricated merge target if necessary
If we have to fabricate the merge target, we use the pg_history from
the soruce to start with, since it is normally close enough. However, if
we get a last_epoch_clean that is > the same_interval_since, then on the
next interval change the past_intervals will have a start that is after
last_epoch_clean, resulting in a past_intervals assert.
Avoid this situation by adjusting the pg_history backwards to match
last_epoch_started (which is always <= last_epoch_clean). This makes
the most sense because these values came from the *real* target, while
the history was from the source.
Fixes: http://tracker.ceph.com/issues/38623 Signed-off-by: Sage Weil <sage@redhat.com>