Previously, there was a harmless bug where we didn't fill in the
last_epoch_started field for a peer which we are resetting the
last_backfill line for. It's no longer harmless since we use that
as the activation epoch, so if the peer is missing the MIN_SIZE
feature bit, we fill in the last_epoch_started it meant to fill in.
Signed-off-by: Samuel Just <sjust@redhat.com>
ObjectStore::Transaction* t = context<RecoveryMachine>().get_cur_transaction();
if (msg->info.last_backfill == hobject_t()) {
+ if (!(msg->get_connection()->get_features() & CEPH_FEATURE_OSD_MIN_SIZE_RECOVERY)) {
+ dout(10) << "Got logevt resetting backfill from peer featuring bug"
+ << " 10780, setting msg->info.last_epoch_started to logevt.query_epoch,"
+ << " which is the activation epoch." << dendl;
+ msg->info.last_epoch_started = msg->get_query_epoch();
+ }
// restart backfill
pg->unreg_next_scrub();
pg->info = msg->info;